Problem Description
F(x,m) 代表一个全是由数字x组成的m位数字。请计算,以下式子是否成立:
F(x,m) mod k ≡ c
Input
第一行一个整数T,表示T组数据。
每组测试数据占一行,包含四个数字x,m,k,c
1≤x≤9
1≤m≤1010
0≤c<k≤10,000
Output
对于每组数据,输出两行:
第一行输出:"Case #i:"。i代表第i组测试数据。
第二行输出“Yes” 或者 “No”,代表四个数字,是否能够满足题目中给的公式。
Sample Input
3
1 3 5 2
1 3 5 1
3 5 99 69
Sample Output
Case #1:
No
Case #2:
Yes
Case #3:
Yes
#include <stdio.h>
#include <math.h>
int main()
{
const int max = 10;//最多10组数据
int t,x[max],m[max],k[max],c[max];
printf("Sample Input\n");
scanf("%d",&t);
getchar();//读取换行符
int i;
for(i=0;i<t;i++)
{
scanf("%d %d %d %d", &x[i],&m[i],&k[i],&c[i]);
getchar();//读取换行符
while((x[i]<1 || x[i]>9) || (m[i]<1 || m[i]>1010) || (k[i]<0 || k[i]>10000) || (c[i]<0 || c[i]>10000))//输入错误时
{
printf("输入错误!正确的输入范围是:1≤x≤9 1≤m≤1010 0≤c<k≤10,000。请重新输入:\n");
scanf("%d %d %d %d", &x[i],&m[i],&k[i],&c[i]);
getchar();//读取换行符
}
}
printf("Sample Output\n");
for(i=0;i<t;i++)
{
int n = 0;//数值
int j;
for(j=0;j<m[i];j++)
{
n = n + x[i] * pow(10,j);
}
printf("Case #%d:\n",i+1);
if(n%k[i]==c[i])
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
0≤c<k≤10,000中k可以等于0,这应该是错的吧,一个数不可以对0取模。若在程序中输入1 1 0 0便会报错。