问题 C: 神奇的数字9 【数学】
2017-03-12 22:51
591 查看
问题 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; }
相关文章推荐
- 2中方法实现数学中组合问题《在10个数中找出任意6个数的组合,数字不能》
- 9.在数学计算或数字分析中,经常会用到计算两个数的最大公约数的问题。即:输入两个正整数,当两个数字有一个不是正整数时会产生异常。当输入非整数数字时,也产生异常。输入无错误后,可计算两个数的最大公约数。
- 物理方法解决数学问题(三):神奇的Fermat原理
- 357.leetcode Count Numbers with Unique Digits(easy)[数学问题 非重复数字]
- 1019数字黑洞(数学问题)
- 小数学解决大问题 - 布隆过滤器 Bloom Filter(由数字进制想到)
- 算法之数学自由组合问题(从M个不重复的数字中选取N个数字进行自由组合)
- 问题 O: 神奇的数字9
- 用Java解决数学问题:将123456789分别填在[ ] [ ] [ ] [ ] ×[ ]=[ ] [ ] [ ] [ ]使等式成立,且数字不允许重复
- 数学之美:平方根倒数速算法中的神奇数字 0x5f3759df
- 几个把平面几何问题的辅助线做到空间去的数学趣题
- 数字证书的中文化问题
- 希尔伯特的23个数学问题
- 用JS限制文本框只能输入数字时的正则表达式问题!
- 关于用css数字与汉字的垂直对其问题
- 数学符号编辑和浏览问题
- 转学一个CSDN群友的好问题案例!!!关于把科目属性用数字替换如下:
- CSS 变量以数字开头以下划线开头的问题。
- A*m+B*n=D问题的数学推导求解
- 数字证书的中文化问题