首页 > 代码库 > hdu 4952 Number Transformation (找规律)
hdu 4952 Number Transformation (找规律)
题目链接
题意:给你个x,k次操作,对于第i次操作是:要找个nx,使得nx是>=x的最小值,且能整除i,求k次操作后的数
分析:
经过打表找规律,会发现最后的x/i,这个倍数会趋于一个固定的值,求出这个固定的值和K相乘就可以了,
为什么会趋于固定的值呢,因为最后虽然i在不断增长,但是x也是在增长的,每次的倍数会回退一个发现
有余数,然后再加上一个,所以趋于稳定。
官方题解:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 #define LL __int64 7 using namespace std; 8 9 int main()10 {11 LL x, k, i, pre, tmp;12 int ca = 1;13 while(~scanf("%I64d%I64d", &x, &k))14 {15 if(x==0 && k==0) break;16 pre = x/1;17 for(i = 2; i <= k; i++)18 {19 tmp = x/i;20 if(x%i==0)21 {22 pre = tmp;23 continue;24 }25 x = (tmp+1)*i;26 if(pre == tmp+1) // 和之前的相同27 break;28 pre = tmp+1;29 }30 31 printf("Case #%d: ", ca++);32 printf("%I64d\n", pre*k);33 }34 return 0;35 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。