Summer Training #13 Div.2 C(公式题)
题意:给定x,k,(x,k皆小于exp(9)),问进行k次操作后x=x+xmod(100)值为多少
题解:推导可得,每进行20次操作,x加上同一个值
代码
#include<stdio.h> #include<string.h> #include<math.h> #include<queue> #include<vector> #include<map> using namespace std; int main(){ int i,j,n,k,temp,T; long long int ans,sum[105],a[100]; scanf("%d",&T); while(T--){ scanf("%d%d",&n,&k); ans=0; memset(sum,0,sizeof(sum)); sum[1]=4*(n%100)%100; temp=n%100; a[1]=4; for(i=2;i<=20;i++){ a[i]=(a[i-1]*2)%100; sum[i]=sum[i-1]+((a[i]%100)*temp)%100; } if(k==1)ans=n%100+n; else if(k==2)ans=n+n%100+(2*n)%100; else ans=n+n%100+(2*n)%100+(k-2)/20*sum[20]+sum[(k-2)%20]; printf("%lld\n",ans); } return 0; }

浙公网安备 33010602011771号