2 条题解

  • 1
    @ 2023-8-9 12:29:36

    我的代码和楼下@ yaosicheng 是差不多滴,这里我的代码附上了注释(思路),可放心食用。

    #include<bits/stdc++.h>
    #define endl '\n'
    using namespace std;
    /*
    跟踪一开始位置为d的小盆友
    第一轮:d -> (d+m)%n
    第二轮: (d+m)%n -> ((d+m)%n+m)%n 
    第10^k轮:(((...(d+m)%n+m)+m)...)%n)
    =>(d+m*10^k)%n
    =>(d%n+m%n*10^k%n)%n
    */
    int n,m,k,x;
    int ksm(int a,int b,int p){
    	int mul=1;
    	while(b){
    		if(b&1)mul=mul*a%p;
    		a=a*a%p;
    		b>>=1;
    	}
    	return mul;
    }
    int main(){
    	ios::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	cin>>n>>m>>k>>x;
    	cout<<(x%n+m%n*ksm(10,k,n)%n)%n<<endl;
    	return 0;
    }
    
    • 1
      @ 2022-8-23 9:05:14
      #include<iostream> 
      #include<cstdio> 
      #include<algorithm>
      #include<cstdlib>
      #include<cmath>
      #include<cstring>
      using namespace std; 
      int n,m,k,x;
      int ksm(int a,int b)
      {
      	int re=1;
      	int t=a;
      	while(b)
      	{
      		if(b&1) re=re*t%n; 
      		t=t*t%n;
      		b>>=1;
      	}
      	return re;
      }
      int main()
      {
      	cin>>n>>m>>k>>x;
      	cout<<(x%n+m%n*ksm(10,k)%n)%n;
      	return 0;
      }
      
      • 1

      信息

      ID
      44
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      13
      已通过
      11
      上传者