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
已知:不知道的是后两位,所以直接把已知的数n*100+10*i+j即可
#include<stdio.h>
int main()
{
int n,m;
int a[100],b[100];
while(~scanf("%d%d",&n,&m)&&(n||m))
{
int x=0;
int y=0;
for(int i=0;i<=9;i++)
{
for(int j=0;j<=9;j++)
{
y=(n*100+i*10+j)%m;
if(y==0)
{
x=x+1;
a[x]=i;
b[x]=j;
}
}
}
for(int i=1;i<x;i++)
printf("%d%d ",a[i],b[i]);
printf("%d%d\n",a[x],b[x]);
}
return 0;
}
同余定理的代码:(把n%m放错位置啦!!!错了就是找不出,忧伤……)
#include<stdio.h>
int main()
{
int n,m;
int a[100],b[100];
while(~scanf("%d %d",&n,&m)&&(n||m))
{
int x=0;
int y=0;
y=n%m;
for(int i=0;i<=9;i++)
{
for(int j=0;j<=9;j++)
{
y=(y*10+i)%m;
y=(y*10+j)%m;
if(y==0)
{
x=x+1;
a[x]=i;
b[x]=j;
}
y=n%m;
}
}
for(int i=1;i<x;i++)
printf("%d%d ",a[i],b[i]);
printf("%d%d\n",a[x],b[x]);
}
return 0;
}