今天creeper要向大家分享一个特殊的数学题目:
这种类型的题目呢,妥妥的编程做简单,之前creeper做这种题目时常这样想......
而今天,我终于把它给做出来了!
根据题意声明并输入三个变量n,m,p~~
#includeusing namespace std; int main(){ int n,m,p; cin >> n >> m >> p; return 0; }
然后就是重复m次的运算,每次都输入一个新的运算符和k:
#includeusing namespace std; int main(){ char op //注意这里要声明一个代表符号的变量op哦! int n,m,p , k ;// 这里也四!! cin >> n >> m >> p; for(int i = 0;i < m;i++){ cin >> op >> k; } return 0; }
接着,进行三种情况的判断:
#includeusing namespace std; int main(){ char op //注意这里要声明一个代表符号的变量op哦! int n,m,p , k ;// 这里也四!! cin >> n >> m >> p; for(int i = 0;i < m;i++){ cin >> op >> k; if(op == '+'){ } else if(op == '-'){ } else { } } return 0; }
然后,在各个if语句框里写上运算:
注意了注意了!这里creeper并没有直接计算(m + / - / * k)%p,而是使用了取模运算的一个公式:
这个公式是为了防止括号里的结果太庞大,我们的C++编程系统 int 无法承受而导致数据溢出,这样得出的结果自然就是错的了。但如果我们在括号运算之前将括号内结果变小而不影响最终结果,这种风险将大大降低,所以就用到了上述公式;
最后输出:
#includeusing namespace std; int main(){ char op //注意这里要声明一个代表符号的变量op哦! int n,m,p , k ;// 这里也四!! cin >> n >> m >> p; for(int i = 0;i < m;i++){ cin >> op >> k; if(op == '+'){n = (m%p + k%p)%p;} else if(op == '-'){n = (m%p - k%p + p)%p;} else {n = (m%p * k%p)%p;}//划重点!! } cout << n; return 0; }
这道题目就大功告成了,可以用这种算法解决很多同类型题目
(但creeper劝告大家做作业时还是应该踏踏实实得算,毕竟考试时可不能编程!!!)



