Chtholly's request CodeForces - 897B (思维题)
题意:给你n,m, 问你n个完全对称的数字(11,22,33,44.....99,1001....)相加mod m的和为多少.(wa了一次,int不行还是要long long)
思路:观察一下,只要枚举前半部分个数字就好了,1,2,....10...,后半部分是前半部分的取反,每次相加的数是:前半部+后半部。
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
ll n,mod;
cin>>n>>mod;
ll ans=0;
ll tmp=1;
ll cnt=10;
while(n--){
ll ftmp=0,x=tmp;
while(x){
ftmp=ftmp*10+x%10;
x/=10;
}
ll tmp1=(tmp*cnt+ftmp)%mod;
ans=(ans+tmp1)%mod;
tmp++;
if(tmp>=cnt) cnt*=10;
}
cout<<ans<<endl;
return 0;
}