Problem Description
一個整數,只知道前幾位,不知道末二位,被另一個整數除盡了,那么該數的末二位該是什么呢?
Input
輸入數據有若干組,每組數據包含二個整數a,b(0< a<10000, 10< b<100),若遇到0 0則處理結束。
Output
對應每組數據,將滿足條件的所有尾數在一行內輸出,格式見樣本輸出。同組數據的輸出,其每個尾數之間空一格,行末沒有空格。
Sample Input
200 40
1992 95
0 0
Sample Output
00 40 80
15
題目解析:
簡單來說:首先,多組數據輸入,每行有兩個整數a,b;其中,a代表著題目中所敘述的那個整數,(一個整數,只知道前幾位,不知道末二位),b代表著(被另一個整數除盡了)的那個整數。
例如第一行200 40 也就是說 200xx / 40 可以得到一個整數,可以整除;
20000 20040 20080這三個數可以將40整除,故輸出00 40 80
思路分析:
對于代碼的實現,首先,要用到多組數據,該題目,主要找到原數就可以了,這里的a是原數的前幾位,而原數的后兩位沒有給出,即,只要a*100+后兩位數 就是原數;這里的后兩位數,可以用個for循環去實現,也就是說,將a*100+(for循環控制00~99),然后,原數滿足可以被b整除,找到滿足的數,即可;當a和b都為0的時候程序結束;最后行末尾沒有空格。
代碼如下:
#include<stdio.h>
int main()
{int a,b,i,j,d[101],flag=0;while(scanf("%d%d",&a,&b)!=EOF) //多組數據輸入{if(a==0&&b==0) //當a和b都為0的時候,程序結束break;flag=0; //這里的flag是為了區分第一個數;即,如果只有一個結果,那么該結果輸出后沒有空格;而當是多個結果的時候,第一個結果后面會有個空格,緊跟著是第二個數的輸出,行末是沒有空格的for(i=0; i<100; i++){j=a*100+i; //這里的j就是將原來的那個數給確定出來,加上i,然后i++,也就是該原數;這里的i是為了補充不確定的后兩位數if(j%b==0) //如果那個數可以被b整除,即,就是所要求的結果{if(flag) //如果flog!=0,就執行;而,flag初始值被賦值為0,即,空格是有最少兩個結果的時候才打印的printf(" ");printf("%02d",i);flag++; //flog++,當先再進行判斷,就會滿足if(flag),然后打印空格,這說明是多滿足的結果,而不是一個結果}}printf("\n"); //按要求,進行換行,格式輸出控制}return 0;}