1604 人见人爱A^B
2016-02-18 15:14
239 查看
首先让我感慨一下,这道题做的太爽了!并不是它用到了什么高级的知识点,而是因为脑洞大开啊!
我把我解决这道题的全部过程写下来。
这道题的重点解决就是第三个示例输入:6789 10000;
一:为了避免溢出我使用了long long,代码如下:
但是,long long根本不够用,如果支持的话,我当时想到用long long long long……
之后我改进了算法
二:我想到了题目既然要求输出最后结果的后3位,超过千位的运算其实都是没有意义的。
何不省略掉呢。这样有两个好处:第一,减小了运算量,第二防止了溢出。
再加上long long 我想可以AC了。见如下代码:
令我没想到的是,居然有溢出了!!!或许你已经发现我傻傻的地方了。
三(AC):其实我去改变a的初值,为何不去改变计算过程中s的值呢?见如下代码:
呵呵O(∩_∩)O,AC了!
顺便补充一下:要计算只包含加法、减法、乘法的整数表达式除以正整数n的余数,可以在每步之后对n取余,结果不变。
我把我解决这道题的全部过程写下来。
这道题的重点解决就是第三个示例输入:6789 10000;
一:为了避免溢出我使用了long long,代码如下:
#include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) { long long s = 1; int c; for(int i=1;i<=b;i++) s = s*a; printf("%d\n",c = s%1000); } return 0; }
但是,long long根本不够用,如果支持的话,我当时想到用long long long long……
之后我改进了算法
二:我想到了题目既然要求输出最后结果的后3位,超过千位的运算其实都是没有意义的。
何不省略掉呢。这样有两个好处:第一,减小了运算量,第二防止了溢出。
再加上long long 我想可以AC了。见如下代码:
#include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b)) { a = a%1000; long long s = 1; int c; for(int i=1; i<=b; i++) s = s*a; printf("%d\n",c = s%1000); } return 0; }
令我没想到的是,居然有溢出了!!!或许你已经发现我傻傻的地方了。
三(AC):其实我去改变a的初值,为何不去改变计算过程中s的值呢?见如下代码:
#include<stdio.h> int main() { int a,b; while(~scanf("%d%d",&a,&b) && a && b) { long long s = 1; int c; for(int i=1; i<=b; i++) { s = s*a; s = s%1000; } printf("%d\n",c = s%1000); } return 0; }
呵呵O(∩_∩)O,AC了!
顺便补充一下:要计算只包含加法、减法、乘法的整数表达式除以正整数n的余数,可以在每步之后对n取余,结果不变。
相关文章推荐
- JRebel for Android 1.0发布!
- Java中通过TCP协议发送和接收数据-Socket编程
- 讲解Python的Scrapy爬虫框架使用代理进行采集的方法
- SPARK_RDD_API
- 万能设配器代码 带加载更多
- iOS-使用NSURLConnection进行Http Get和Post请求网络数据
- 一个第三方的view,四周圆角边框随意设置
- mysql新建表和修改字段例子
- html5中使用canvas画时钟
- webService接口发布失败问题
- VC++的窗口句柄和窗口ID
- [Unity2d系列教程] 004.Unity如何调用ios的方法(SDK集成相关)
- nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
- Cef概览
- configure: error: *** libmcrypt was not found 错误解决
- P2P、P2C、O2O、B2C、B2B、C2C 介绍
- mark关于Java语言Static的生命周期
- erlang 自定义dns文件和Hosts文件
- PCA、LDA的参考学习、理解、混乱、清晰的过程
- PPT嵌入字体的方法