新手天翼
求各位大佬告知(0分代码):
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
long long n,m,k,x;
long long s(long long g,long long k)
{
if(k==0) return 0;
if(k==1) return g ;
if(k%2==0) return s(g*g,k/2);
return (s(g*g,k/2)*g);
}
int main()
{
cin>>n>>m>>k>>x;
for(int i=1;i<=s(10,k);i++)
{
x=(x+m)%n;
cout<<x<<endl;
}
cout<<x;
return 0;
}
修练者
long long s(long long g,long long k) { if(k==0) return 1; if(k==1) return g; if(k%2==0) return (s((g*g)%n,k/2))%n; return (s(g*g%n,k/2)*g%n)%n; }
修练者
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
long long n,m,k,x;
long long s(long long g,long long k)
{
if(k==0) return 0;//任何数的0次方都等于1
if(k==1) return g ;
if(k%2==0) return s(g*g,k/2);
return (s(g*g,k/2)*g);
}//由于结果远大于long long范围,因此每一次运算都要%n
int main()
{
cin>>n>>m>>k>>x;
for(int i=1;i<=s(10,k);i++)
{
x=(x+m)%n;
cout<<x<<endl;//这一行大概是你测试用的吧 删掉
}
cout<<x;//直接输出结果((s(10,k)*(m%n)%n)+(x%n))%n)即可
return 0;
}
新手光能
递归函数:
long long s=1;
while(n)
{
if(n&1)
s=(s*a)%p;
a=(a*a)%p;
n=n>>1;
}
return s;
=========================分割线
主函数:
cin>>n>>m>>k>>x;
cout<<(x+(m*fast(10,k,n)%n)%n)%n;
return 0;
求采纳
新年快乐,同学!!