超时的处理——hdu acmstep1.2.7 RightmostDigit
来源:互联网 发布:linux 搭建lamp 编辑:程序博客网 时间:2024/06/06 00:09
由于数字较大,联想到末位数字只与每次运算结果的最后一位有关,因此先进行%10处理。
#include <cstdio>using namespace std;int main(){ int T; scanf("%d",&T); for(int i=1;i<=T;i++) { long long int N,sum=1; scanf("%lld",&N); int number=N%10; for(int n=1;n<=N;n++) { sum=sum*number; sum=sum%10; } printf("%lld\n",sum); } return 0;}
然后就会发现…超时了。N的范围是10亿,而一秒只能运行10^8次。但其实最多只需要运行十次,因为末位数字总是在循环出现的。所以只要求出一个循环里面含有的数字个数,再计算出N应该与这个循环中的第几个数字相等即可。
#include <cstdio>using namespace std;int a[10];//在一个循环中最多有十个数字int main(){ int T; scanf("%d",&T); for(int i=1;i<=T;i++) { long long int N; int section=1,n; //由于第一个else里面是直接break的,如果第一个就直接相等了,比如5,section也应该是1而不是0,因此初始化值是1。 scanf("%lld",&N); a[0]=N%10; int sum=a[0]; //sum初始化值为a[0],因为初始化为1的话则进入循环的第一个if一定相等。 for(n=1;n<10;n++) { sum=sum*a[0]; sum=sum%10; if(sum!=a[0]) { section++; a[n]=sum; } else break; } int row=N%section; if(row==0)//注意没有余数时还是有一点点不一样的 sum=a[section-1]; else sum=a[row-1]; printf("%d\n",sum); } return 0;}
0 0
- 超时的处理——hdu acmstep1.2.7 RightmostDigit
- HDU ACMstep1.2.8 Vowel counting
- Struts2自定义拦截器实例—Session超时的处理
- Symbian—如何处理网络连接超时的问题?
- Struts2自定义拦截器实例—Session超时的处理
- Struts2自定义拦截器实例—Session超时的处理
- Struts2自定义拦截器—Session超时的处理
- Struts2自定义拦截器—Session超时的处理
- Struts2自定义拦截器实例—Session超时的处理
- NIO的超时处理
- nginx的超时处理
- WebView的超时处理
- Nginx的超时处理
- WebView的超时处理
- nginx的超时处理
- Nginx的超时处理
- 超时的处理
- IRP的超时处理
- redis 启动服务端和客户端
- eclipse导入android-support-v7-recyclerview.jar时报“The hierarchy of the type is inconsistent”错误
- 发生系统错误 1312 指定的登录会话不存在。可能已被终止 IIS 访问 远程共享目录
- Spring 的优秀工具类盘点:文件资源操作和 Web 相关工具类
- Linux驱动开发(二)——字符设备驱动模型
- 超时的处理——hdu acmstep1.2.7 RightmostDigit
- Linux驱动开发(三)——并发控制
- 1_6_0用栈来求解汉诺塔问题_传统汉诺塔问题求解
- opencv学习笔记(八)彩色视频转换成黑白视频
- Linux驱动开发(四)——I/O操作
- 使用接口组织枚举
- UGUI之RectTransform常用点
- 深入理解Java(三):注解(Annotation)--注解处理器
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题