大数取余数
n个相同的数对七的余数
输入:
输入数据有多行,当n为0时结束
输出:
对于每行测试数据,计算余数,每个输出占一行
测试数据
输入
1
2
0
输出
2
1
分析:
int 型的数有范围,肯定不能用直接用一个特别大的数来求余数
像手算除法那样进行
还可以进行找规律。
方法①代码如下
#include<stdio.h>
int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n==0)
break;
int k=n,res=0;
while(k)
{
res=res*10+9;
res=res%7;
k--;
}
printf("%d\n",res);
} return 0;}方法②通过规律
规律如下
2, 1, 5, 3, 4, 0, 2, 1, 5, 3, 4, 0, 2, 1, 5
#include<stdio.h>
int main()
{
int n;
int a[6]={2,1,5,3,4,0};
while(scanf("%d",&n))
{
if(n==0)
break;
int k=n%6;
if(k==0)
printf("%d\n",a[5]);
else
printf("%d\n",a[k-1]);
}
return 0;
}
扩展
比如用42142134324 来对7取余
将大数用字符数组存起来
核心算法
while(k)
{
res=res*10+a[i];
res=res%7;
k--;
}