NC50550. 转圈游戏
描述
输入描述
输入共1行,包含4个整数n、m、k、x,每两个整数之间用一个空格隔开。
输出描述
输出共1行,包含1个整数,表示轮后x号小伙伴所在的位置编号。
示例1
输入:
10 3 4 5
输出:
5
C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 436K, 提交时间: 2022-11-10 16:43:52
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll qmi(ll a,ll b,ll mod) { ll res =1; while(b) { if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res; } int main() { ll n,m,k,x; cin>>n>>m>>k>>x; cout<<(x+qmi(10,k,n)*m%n)%n<<endl; }
C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 484K, 提交时间: 2019-08-21 08:58:09
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll ksm(ll x,ll y,ll mod){ ll res=1; while(y){ if(y&1) res=res*x%mod; x=x*x%mod; y>>=1; } return res; } int main(){ ll n,m,k,x; scanf("%lld%lld%lld%lld",&n,&m,&k,&x); printf("%lld\n",(x+m*ksm(10,k,n)%n)%n); }
C++ 解法, 执行用时: 3ms, 内存消耗: 444K, 提交时间: 2021-08-07 16:25:02
#include<bits/stdc++.h> using namespace std; int main() { int n,m,k,x; cin>>n>>m>>k>>x; int t=10; int ans=1; while(k) { if(k&1) ans=ans*t%n; t=t*t%n; k=k>>1; } ans=ans*m%n; ans=(ans+x)%n; cout<<ans; return 0; }
Python3 解法, 执行用时: 62ms, 内存消耗: 7028K, 提交时间: 2021-07-07 15:01:22
import math n,m,k,x=map(int,input().split()) a=n*m k=pow(10,k,a) x+=k*m print(int(x%n))