- 转圈游戏
- 2015-06-04 14:59:21 @
我用找循环的方法,可是最后2个点超时的
2 条评论
-
冲啊小笼包 LV 9 @ 2015-10-23 19:52:01
找循环应该可解。最后2个点超时的原因是因为你自己输入
pascal code
program ex;
var i,sum:longint;
begin
for i:=1 to 1000000000 do
inc(sum);write(sum);
end.试试。光这样就超时了,更别说10乘起来然后那个啥。
唯一的办法就是按楼下那样,不是10个10个乘,你可以10000 10000的乘之类。
当然也可以找循环然后用快速幂,一样的其实。但是用了快速幂了的话就不需要找循环了。
其实少这20分也没啥问题、 -
2015-10-23 00:19:18@
可以,只要一个10倍的优化就可以了
#include<iostream>
using namespace std;
#define maxt 1000000000000
int main()
{
long long n,m,k,x,t,t1,t2;
cin>>n>>m>>k>>x;t=m;
t1=k/12;t2=k%12;
for(int i=0;i<t2;i++)t=t*10;//这里不管之前取多少位压缩都要乘10
t%=n;
for(int i=0;i<t1;i++){
t=t*maxt;
t%=n;
}
cout<<(x+t)%n<<endl;
return 0;
}
- 1
信息
- ID
- 1841
- 难度
- 6
- 分类
- (无)
- 标签
- 递交数
- 6573
- 已通过
- 1791
- 通过率
- 27%
- 被复制
- 10
- 上传者