整除的尾数
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
这道题逻辑上一马平川,指哪打哪的水题,对于我这种初学者来说难点有:
1. 如何实现数字间有空格数字尾没空格
2. 如何让0当做00输出来
一开始我的方法太笨了,甚至还想到了转换为字符串强制输出00,后来上网查才知道c++有
cout.width(2);//输出位数为2
cout.fill('0');//不够的用0补(注意,必须为‘0’,加一对引号;光0不可以,他还是会输出2位,但补出来的位是空着的)
第一个也是,巧妙的方法有很多,自己的方法就很笨,上网一看就恍然大悟了,详解在代码中
方法一:
//输出数之间有空格末尾无空格的
for(int i=0;i<num;i++){
cout<<count[i];
if(i!=num-1) cout<<' ';
}
cout<<endl;
方法二:
///or 第二种数间空格方法
cout<<count[0];
for(int i=1;i<num;i++){
cout<<" "<<count[i];
}
cout<<endl;
下面上代码:
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int a,b;
while((cin>>a>>b)&&a>0){
int num=0;
int count[105];
for(int i=0;i<=9;i++){
for(int j=0;j<=9;j++){
if((100*a+10*i+j)%b==0){
count[num]=10*i+j;
num++;
}
}
}
//如何输出两位数
cout.width(2);
cout.fill('0');
//输出数之间有空格末尾无空格的
for(int i=0;i<num;i++){
cout<<count[i];
if(i!=num-1) cout<<' ';
}
cout<<endl;
// //or 第二种数间空格方法
// cout<<count[0];
// for(int i=1;i<num;i++){
// cout<<" "<<count[i];
// }
// cout<<endl;
//笨方法黑历史,还费劲地要清空数组,费力不讨好
// if(num==1){
// cout<<count[0]<<endl;
// }else{
// cout<<count[0]<<"hh";
// for(int i=1;i<=num;i++){
// cout<<count[i]<<" ";
// }
// //cout<<"jj"<<count[num]<<endl;
// memset(count,0,num*sizeof(int));
// }
}
}
2. 如何让0当做00输出来
//如何输出两位数
cout.width(2);
cout.fill('0');