最近在杭电的ACM上看到了两道题2116,2117.虽然难度不算太大,却给了我很大的启示。除法与取余运算,这两种本该在一种运算中的工具。具有不同的意义。
顾名思义,取余得到的结果,就是被除数除去除数后的结果。这种运算,在处理大数的过程中具有很大的意义。而做模拟整除,就是在不断重复我们小学时代做除法竖式时的情景,即做除法,得到一个结果,再对得到的余数乘上10(或者进制数)再次进行除法。我们惯性的思维总觉得是得到了小数点后的某一位。但是实际上,我们得到的是一个个位上的数,这就是模拟除法。可以得到小数点后任意一位数。
题目的说明:
hdu acm 2114
这道题要求输出一个很大的数的立方和的后四位数,我们采用long long但在输出时,对最后的四位取余数。得到最后的结果。
hdu acm 2117
最后的代码:
2114
#include <iomanip>
#include<iostream>
int main()
{
using namespace std;
long long n,sum;
cin >> n;
sum=((n*(n+1))%10000/2)*((n*(n+1))%10000/2);
cout<<setw(4)<<setfill('0')<<sum;
return 0;
}
2117:

本文介绍了在杭电ACM竞赛中遇到的2114和2117两道题目,这两道题目涉及到模拟除法和取余运算的重要运用。在处理大数时,取余运算具有关键作用;而模拟整除则是通过不断重复基本的除法过程来获取小数点后任意位的数值。在2114题中,需要计算大数立方和的后四位,通过取余得到结果;2117题的解决方案未给出详细内容。
最低0.47元/天 解锁文章
786

被折叠的 条评论
为什么被折叠?



