Problem Description:

锴神:我尊重作者原意,你们出什么我就加什么。于是小光打了道水题(也就是这道),但是呢比赛的时候拿着自己的标程却AC不了,最后只能尴尬地打表!!为毛呢?!请你来看看这道题,为了缓解小光的尴尬,他决定不告诉你样例输入输出,神马?!没有输入输出?对,就是这么贼!

Input:

多组数据,输入n,求(1^n+2^n+3^n+4^n)mod 5,其中n范围是[10^5,10^(10^5)],数字可能有前导0

Output:

当然是结果啦~

Sample Input:

不给你

Sample Output:

就是不给你
解题思路:题目的意思很简单,已经提示要找规律,于是(快速幂)暴力枚举查找,发现如果是4的倍数,计算结果是4,否则为0。其中红色部分n的区间数的位数是5位数到10万位数,因此字符串长度开10^5+5即可。注意读取的字符串可能前导有0,所以要去掉前导的'0'。
测试代码:
 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL mod_pow(LL base,LL n,LL mod){//快速幂
LL res=;
while(n){
if(n&)res=res*base%mod;
base=base*base%mod;
n>>=;
}
return res;
}
int main(){
LL sum=;//测试
for(int i=;i<;++i){
sum=(mod_pow(,i,)+mod_pow(,i,)+mod_pow(,i,)+)%;
cout<<i<<' '<<sum<<endl;
if(i%==)cout<<i<<"是可以的"<<endl;
}
return ;
}
AC代码:
 #include<bits/stdc++.h>
using namespace std;
char s[];
int main(){
while(cin>>s){
int sum=,j=;
while(s[j]=='')++j;//去掉前导0
for(int i=j;i<(int)strlen(s);++i)
sum=(sum*+(s[i]-'')%)%;//同余方程
if(sum)cout<<''<<endl;//如果sum不是0则结果为0,否则为4
else cout<<''<<endl;
}
return ;
}
 同余定理的还有:hdu 1212 Big Number

最新文章

  1. Hadoop伪分布式集群环境搭建
  2. JAVA中内部类和同文件非内部类的总结
  3. 为什么SqlTransaction.Rollback会抛出SqlException(11,-2)(即SQL超时异常)
  4. 《从零开始做一个MEAN全栈项目》(4)
  5. 【python】入门学习(一)
  6. POJ 1556 The Doors --几何,最短路
  7. 三级联动查询全国省市区(xml与数据库)
  8. RHEL6.3 ftp服务器参数的戏说——不看白不看,看了不白看
  9. PCB外形加工培训教材
  10. Ajax 生成流文件下载 以及复选框的实现
  11. Kotlin学习第一课:从对比Java开始
  12. Cactus
  13. Linux - ubuntu中vi不能正常使用方向键与退格键的问题
  14. Frogger POJ - 2253
  15. linux服务器 jboss-7安装
  16. 练习 HashSet 去重复
  17. linux卸载erlang
  18. 删除本地git的远程分支和远程删除git服务器的分支【转】
  19. loadrunner之Java Vuser协议脚本编写
  20. python遍历数组获取下标

热门文章

  1. [ C语言 ] 迷宫 迷宫生成器 [ 递归与搜索 ]
  2. Linux下汇编语言学习笔记14 ---
  3. 2017-10-02-morning
  4. json数组显示格式
  5. 看我如何基于Python&amp;Facepp打造智能监控系统
  6. 电脑无线WIFI怎么共享给手机
  7. java UDP聊天与文件传输
  8. HTML5----CSS3图片滤镜(filter)特效
  9. mysql数据库批量高速插入
  10. Android学习笔记-获取手机内存,SD卡存储空间。