问题 C: 神奇的数字9
时间限制: 1 Sec
内存限制: 128 MB
题目描述
给定一个数N(没有前导0)和Q次操作,每次操作修改第i位数字 为 v(保证不会把第一位修改为0),对每次操作判定新数能否被9整除。
若满足被9整除输出1,反之输出0。
输入
有多组测试数据,请处理到文件结束。
每组数据有两个整数N和Q,接下来有Q行代表Q次操作,每行有两个整数i和v。
后台数据保证0 <= N <= 10^1000000,1 <= Q <= 10^6,1 <= i <= |N|,0 <= v <= 9。
输出
每组数据输出Q行,代表对Q次操作后的判定。
样例输入
999 3
2 0
3 0
2 9
10000000000000000000000000000000000000000000000 1
2 8
10000000000000000000000000000000000000000000000 4
2 9
3 8
4 9
5 9
样例输出
1
1
1
1
0
1
1
1
思路 : 数学知识 目前已知的就是9 和3 这两个数字,,只要是能够整除他们的数字,那么其各个位之和也是可以整除的3或者9
代码:
#include<string.h>
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<queue>
#include<stack>
#define inf 0x3f3f3f
#define M 10000000+3
using namespace std;
char str[M];
int main()
{
int n,q;
while(~scanf("%s%d",str,&q))
{
int len=strlen(str);
int sum=0;
for(int i=0;i<len;i++)
sum+=str[i]-'0'; // 获取 本来的值
for(int i=0;i<q;i++)
{
int k,v;
scanf("%d%d",&k,&v);
sum=sum-str[k-1]+'0';
sum+=v;
str[k-1]=v+'0'; // 更新这个字符
printf("%d\n",sum%9==0?1:0);
}
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-37742.html