結果

問題 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0