64分...

我就想过道提高+/省选-为啥这么难
题目

#include<bits/stdc++.h>
using namespace std;
string s1;
long long s2,a[20000001],n,i,x,p;
long long dg(long long a,long long b)
{
    if(b==1) return a%s2;
    long long t=dg(a,b/2)%s2;
    return (((t*t)%s2)*(b%2==0?1:a%s2))%s2;
}
int main()
{
	cin>>p;
	cin>>s2>>s1;
	int len=s1.size();
	for(i=0;i<len;++i) a[i]=s1[i]-48;
	for(i=0;i<len;++i) x=(x*10+a[i])%s2;
	cout<<dg(p,x);
	return 0;
}
1 个赞
#include<bits/stdc++.h>
using namespace std;
long long a,m,ans=1;
char c[20000001];
long long ksm(long long x,int y)
{
	long long ans=1; 
	while(y>0)
	{
		if(y&1) 
		ans=ans*x%m; 
		x=x*x%m; 
		y>>=1;
	} 
	return ans;
}
int main()
{
    scanf("%lld%lld",&a,&m);
    scanf("%s",c); 
	int i=strlen(c);
    while(i>0) 
    {
    	ans=ans*ksm(a,c[--i]^'0')%m;
		a=ksm(a,10);
    }
    printf("%lld\n",ans);
    return 0;
}
1 个赞

So你这是AC了?

1 个赞

@金杭东 看看能行吗

1 个赞

你别说好像真的行

1 个赞

那你能看看我错哪了吗

1 个赞

恶意举报人员请注意金杭东已经发过代码
我只是给个正解

2 个赞

你这我看不懂能看看我的哪里要改吗

1 个赞

我去运行一下
等我一下

1 个赞

这————

1 个赞

怎么了

1 个赞

我没找到啊

1 个赞

我样例2是错的

1 个赞


但代码没看出问题

1 个赞

hellow

1 个赞

@金杭东 另请高明吧

1 个赞

额…

1 个赞