首页 > 代码库 > HDU 1210

HDU 1210

感觉就是乱搞找规律

自己写几组数据

本来开始是想着把 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 }

 

HDU 1210