原题链接:1504 - 约瑟夫问题-东方博宜OJ 题目描述 约瑟夫问题来源于公元1世纪的犹太历史学家Josephus。问题描述,有n个人(分别以编号1,2,3...n表示)围成一个圆圈,从编号为1的人开始进行1~m正向报数,报到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;如此重复下去,直到所有的人全部出列,求最后一个出列人的编号 输入 输入文件仅有一行包含二个用空格隔开的整数N,M (2≤N≤100000,M≤10^9)。 输出 输出文件仅有一行包含一个整数表示一个整数,表示最后一个人在队列中的编号。 样例 输入 8 3 输出 7 来源 容器 vector 标签 容器vector C++ #include<bits/stdc++.h> using namespace std; int f(long long n,long long m) { long long s=0; for(int i=2;i<=n;i++) { s=(s+m)%i; } return s+1; } long long n,m; int main(){ cin>>n>>m; long long s=f(n,m); cout<<s; return 0; } 恕我直言,这道题就是个渣渣(#^.^#)