結果
問題 |
No.528 10^9と10^9+7と回文
|
ユーザー |
![]() |
提出日時 | 2025-05-21 16:49:01 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,235 bytes |
コンパイル時間 | 2,895 ms |
コンパイル使用メモリ | 278,396 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-05-21 16:49:07 |
合計ジャッジ時間 | 5,829 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 WA * 18 |
ソースコード
#include<bits/stdc++.h> #define int long long using namespace std; const int mod1=1e9,mod2=1e9+7; int n,f,ans1,ans2;string s; int qpow(int a,int x,int mod) { if(x==0)return 1; if(x==1)return a; int c=qpow(a,x/2,mod),y=qpow(a,x%2,mod); return c*y%mod*c%mod; } signed main() { cin>>s;n=s.size(); reverse(s.begin(),s.end()); for(int i=0;i<n-1;i++) { (ans1+=9*qpow(10,i/2,mod1)%mod1)%=mod1; (ans2+=9*qpow(10,i/2,mod2)%mod2)%=mod2; } if(n==1) { (ans1+=s[0]-'0')%=mod1; (ans2+=s[0]-'0')%=mod2; } else if(n==2) { (ans1+=min(s[0],s[1])-'0')%=mod1; (ans2+=min(s[0],s[1])-'0')%=mod2; } else { (ans1+=(s[n-1]-'1')*qpow(10,(n-1)/2,mod1)%mod1)%=mod1; (ans2+=(s[n-1]-'1')*qpow(10,(n-1)/2,mod2)%mod2)%=mod2; for(int i=n-2;i>n/2;i--) { (ans1+=(s[i]-'0')*qpow(10,i/2,mod1)%mod1)%=mod1; (ans2+=(s[i]-'0')*qpow(10,i/2,mod2)%mod2)%=mod2; } f=1; if(n&1) { for(int i=0;i<=n/2;i++) { if(s[n/2+i]>s[n/2-i]){f=0;break;} if(s[n/2+i]<s[n/2-i])break; } } else { for(int i=0;i<n/2;i++) { if(s[n/2+i]>s[n/2-i-1]){f=0;break;} if(s[n/2+i]<s[n/2-i-1])break; } } (ans1+=s[n/2]-'0'+f)%=mod1; (ans2+=s[n/2]-'0'+f)%=mod2; } cout<<(ans1+mod1)%mod1<<'\n'<<(ans2+mod2)%mod2; }