NC54546. AKU NEGARAKU
描述
输入描述
Input will consist of a series of lines, each line containing the number of companies (N) with , and a skipping value (M) with . The values will be terminated by a line consisting of double zeros (0 0) as shown in sample input output.
输出描述
Output will consist of a series of lines, one for each line of the input. Each line will consist of the number M according to the above scheme.
示例1
输入:
15 6 550 23 0 0
输出:
7 470
C++14(g++5.4) 解法, 执行用时: 16ms, 内存消耗: 396K, 提交时间: 2020-10-07 12:41:30
#include<iostream> using namespace std; int f(int n,int m){ if(n==1) return 0; return (f(n-1,m)+m)%n; } int main(){ int n,m; while(cin>>n>>m,n&&m){ cout<<f(n,m)+1<<endl; } return 0; }
pypy3(pypy3.6.1) 解法, 执行用时: 99ms, 内存消耗: 21592K, 提交时间: 2020-10-02 12:51:33
while True : n, m = map(int, input().split()) if n == 0 and m == 0 : break ans = 0 for i in range(2, n + 1) : ans = (ans + m) % i print(ans + 1)
C(clang 3.9) 解法, 执行用时: 13ms, 内存消耗: 256K, 提交时间: 2020-10-05 14:30:00
#include<stdio.h> int main(){ int m,n; while(scanf("%d%d",&m,&n)&&(m&&n)) { int s=0; for(int i=1;i<=m;i++){ s=(s+n)%i; } printf("%d\n",s+1); } return 0; }
Python3(3.5.2) 解法, 执行用时: 147ms, 内存消耗: 3320K, 提交时间: 2020-10-02 12:37:42
N,M=map(int,input().split()) while not (N==0 and M==0): P=0 for i in range(2,N+1): P=(P+M)%i print(P+1) N,M=map(int,input().split())
C++11(clang++ 3.9) 解法, 执行用时: 14ms, 内存消耗: 380K, 提交时间: 2020-10-02 12:02:21
#include<stdio.h> int main() {int i,x,jo,m; while(~scanf("%d %d",&x,&m)&& x && m) { jo=0; for(i=2;i<=x;i++) jo=(jo+m)%i; printf("%d\n",jo+1); } }