Have Fun with Numbers


題目

  題目鏈接

  

 

  第一次做全英文編程題(詞匯量嚴重不足,還需多記單詞);

  題目的大致意思就是說:輸入一個不超過20位的整數,將這個數乘以2,比較計算前和計算后的結果是否滿足題目的要求,

  這個要求具體是指判斷組成這兩個數的具體數字出現的次數是否相等,例如:這個數為123456789,它乘以2之后得到246913578,

  組成這兩個數的數字為1、2、3、4、5、6、7、8、9,並且他們在123456789和246913578中出現的次數相等,所以滿足題目的要求。

 

代碼(思路在注釋中)

#include<stdio.h>
void printArray(int nums[],int len);
int main()
{
    //由於數字的位數比較長就算使用long long型,位數還是不夠用
    //所以需要用字符串來存儲用戶輸入的數字
    char str[20];
    //字符串轉換為的數組,存儲用戶輸入的整型數字
    int nums[20];
    //原有的數組乘以2,存儲數字計算后的結果
    int nums1[20];
    //用於判斷計算前后的數字特征是否一致
    //也就是計算前后每個數字出現的次數是否一樣
    int a[10] = {0};
    int b[10] = {0};
    //定義循環變量
    int i = 0, j = 0;
    //定義數組長度,最后的判斷標志
    int len = 0, flag = 0;
    //接收用戶輸入的字符串
    scanf("%s",str);
    
    //通過循環,每一位數字都乘以2,得到計算后的結果
    while(str[i]!='\0'){
        nums[i] = str[i]-'0';
        nums1[i] = nums[i]*2;
        i++;
        len++;
    }
    //判斷計算后的數組是否有進位
    //如果有進位,則需要調整數組
    for(i = len-1; i >= 1;i--)
    {
        if(nums1[i] >= 10){
            nums1[i] = nums1[i] - 10;
            nums1[i-1] = nums1[i-1] + 1;
        }
    }
    //最簡單的一種情況
    //計算前后位數不同,直接否定
    if(nums1[0] >= 10){
        printf("No\n");
        printArray(nums1,len);
    }
    //計算前后位數相同,比較各個數字出現的次數是否相同
    else{
        //統計計算前的數組中0~9出現的次數
        for(i = 0; i < len; i++){
            for(j = 0;j < 10; j++){
                if(nums[i] == j)
                    a[j]++;
            }
        }
        //統計計算后的數組中0~9出現的次數
        for(i = 0; i < len; i++){
            for(j = 0; j < 10 ; j++){
                if(nums1[i] == j)
                    b[j]++;
            }
        }
        //最后判斷a,b兩數組是否完全相同
        //相同 ==>  Yes
        //不同 ==>  No
        for(i = 0; i < 10; i++){
        if(a[i] != b[i]){
            flag = 1;
            break;
        }
    }
    if(flag == 0)
        printf("Yes\n");
    else
        printf("No\n");
    printArray(nums1,len);

    }
    
    return 0;
}
//封裝了一個用於打印數組的函數
void printArray(int nums[],int len)
{
    int i = 0;
    for(i = 0; i < len; i++)
    {
        printf("%d",nums[i]);
    }
    printf("\n");
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM