感觉就是乱搞找规律
自己写几组数据
本来开始是想着把 n 个数字每次回到原来位置各需要多少次,然后取它们的最小公倍数就好了
但是数据写着写着发现每一个数回到原来位置次数都是一样的,那么就简单了,直接第一个数
为例,不断跟踪位置,计算它走过的次数
1 #include <cstdio> 2 3 int main() 4 { 5 int n; 6 while(scanf("%d" , &n)!=EOF) 7 { 8 int k = 2 , ans = 1; 9 while(k != 1){ 10 if( k <= n ) k <<= 1; 11 else k = (k - n)*2-1; 12 ans++; 13 } 14 printf("%d\n" , ans); 15 } 16 return 0; 17 }
时间: 2024-12-18 20:55:47