问题 C: 神奇的数字9【数学】

    xiaoxiao2021-03-25  73

    问题 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

    最新回复(0)