每日“亿“题 东方博宜OJ 1504 - 约瑟夫问题

原题链接: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;
}

恕我直言,这道题就是个渣渣(#^.^#)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值