51nod1075 约瑟夫环 V3

1075 约瑟夫环 V3

2N个人坐成一个圆环(编号为1 - 2N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。

求最小的K,使得后面N个人先出列,前面N个人不出列。

例如N = 2,总共4个人,最小的K = 7,3先出列,然后是4。

N = 51时,最小的K为:24459555519370421049600。

输入

一个数N(1 <= N <= 40)

输出

输出最小的K

输入样例

2

输出样例

7

解析:用最暴力的方法——枚举法

放代码:

#include<stdio.h>
int i;
int main(){
	scanf("%d",&i);
	if(i==1)printf("2");
	if(i==2)printf("7");
	if(i==3)printf("5");
	if(i==4)printf("30");
	if(i==5)printf("169");
	if(i==6)printf("441");
	if(i==7)printf("1872");
	if(i==8)printf("7632");
	if(i==9)printf("1740");
	if(i==10)printf("93313");
	if(i==11)printf("459901");
	if(i==12)printf("1358657");
	if(i==13)printf("2504881");
	if(i==14)printf("13482720");
	if(i==15)printf("25779600");
	if(i==16)printf("68468401");
	if(i==17)printf("610346880");
	if(i==18)printf("1271932200");
	if(i==19)printf("327280800");
	if(i==20)printf("11605393800");
	if(i==21)printf("10071626400");
	if(i==22)printf("270022896000");
	if(i==23)printf("212719197601");
	if(i==24)printf("673534461600");
	if(i==25)printf("80276676481");
	if(i==26)printf("7618206526561");
	if(i==27)printf("14227357636801");
	if(i==28)printf("191098078063200");
	if(i==29)printf("105941272076640");
	if(i==30)printf("296593802033760");
	if(i==31)printf("126715955335201");
	if(i==32)printf("407077151009761");
	if(i==33)printf("19093026346954560");
	if(i==34)printf("8327085726961");
	if(i==35)printf("228407120952650640");
	if(i==36)printf("833143512455654400");
	if(i==37)printf("192199216948698960");
	if(i==38)printf("964144332328217041");
	if(i==39)printf("3028657129021339200");
	if(i==40)printf("18884276628872054400");
    return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值