整除的尾数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 40634 Accepted Submission(s): 17370
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
其实这样的题目就是一个纸老虎,我开始是一点都摸不着头脑,然后偷懒去百度了一下,看到一个思路:一个数的末尾两位无非就是00~99,所以,我们直接就给这个数*100+0~99之后再去除我们输入的另一个数,这样如果取余后==0,那么就是可以整除,我们把这个数给输出即可。
注意一:就是我们最后的输出是不允许有“ ”空格的,所以,我们选择把空格加在前面,就是第一个数正常输出,第二个数的前面加空格。
注意二:要是输出的数是小于10的话,要在前面+0;
综上 附上代码:
1 #include <iostream> 2 #include<math.h> 3 #include <iomanip> 4 #include<cstdio> 5 #include<string> 6 #include<map> 7 #include<vector> 8 #include<list> 9 #include<algorithm> 10 #include<stdlib.h> 11 #include<iterator> 12 #include<sstream> 13 #include<string.h> 14 using namespace std; 15 16 int main() 17 { 18 int m,n; 19 while(cin>>m>>n) 20 { 21 if(m==0&&n==0) 22 { 23 break; 24 } 25 int temp; 26 int flag=0; 27 28 for(int i=0;i<=99;i++)//后面的数无非是0~99 29 { 30 temp=m*100+i; 31 32 if(temp%n==0) 33 { 34 flag++; 35 if(flag==1)//flag用来判断是不是 第一个数 这个是第一个的情况 36 { 37 if(i<10) 38 { 39 cout<<"0"<<i; 40 } 41 else 42 { 43 cout<<i; 44 } 45 46 } 47 else//如果不是第一个的情况的话就要 在前面加个空格。 48 { 49 if(i<10) 50 { 51 cout<<" 0"<<i;// 52 } 53 else 54 { 55 cout<<" "<<i; 56 } 57 } 58 } 59 60 } 61 cout<<endl; 62 } 63 return 0; 64 }