結果
| 問題 |
No.528 10^9と10^9+7と回文
|
| ユーザー |
vjudge1
|
| 提出日時 | 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;
}
vjudge1