|
此题的基本思想是类似单精度除法,和那个天使的起誓类似。我们把1-99的数字装到一个数组,作为单精度除法的被除数,让它按位去除以997,最后得到的余数就是。
如何装入数组呢?我们用最直观的方法,先把1-9作为一位数装入,再把10-99作为两位数装入。这里可以写一个循环,里面判断一位数还是两位数,也可以分开写成两个循环。
- #include <iostream>
- using namespace std;
- int i,p,x;
- int a[210];
- int main()
- {
- for (p=1; p<=9; p++) a[p]=p; ///一位数加进数组
- p=9;for (i=10; i<=99; i++)
- {
- int x1=i/10,x2=i%10;///分离十位个位
- a[p+1]=x1,a[p+2]=x2;///加进数组
- p=p+2; ///p记录最后一个位置
- }
- int maxp=p;/// 记录最后一个位置
- ///输出检查 for(p=1; p<=maxp; p++) cout<<a[p];
- ///类似单精度除法
- x=0;for (p=1; p<=maxp; p++)
- {
- x=10*x+a[p]; ///被除数
- a[p]=x/997;///商,此题其实没有必要记录
- x=x%997;///余数
- }
- cout<<x;
- return 0;
- }
复制代码
一起处理也可以写成如下- p=1;for (i=1; i<=99; i++)
- {
- if (i<=9)
- {a[p]=i;p++;}///一位数处理
- else ///两位数处理
- {
- int x1=i/10,x2=i%10;///分离十位个位
- a[p+1]=x1,a[p+2]=x2;///加进数组
- p=p+2; ///p记录最后一个位置
- }
- }
复制代码
答案是 896 |
|