计算,以下式子是否成立,怎么用C语言编程写得代码来计算这个等式的成立呢?

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便会报错。