BZOJ 3858 Number Transformation 数论

来源:互联网 发布:mac给iphone刷机 编辑:程序博客网 时间:2024/06/03 17:58

题目大意:给定n,k,i从1到k循环一遍,每次将n更新成i的倍数中第一个大于等于n的 求最终的n

逗比题。。。

我们会发现当i>=sqrt(n)时,ceil(n/i)每次都是一样的- -

↑不能理解这句话的注意n是变化的

于是当i>=sqrt(n)时只需要输出ceil(n/i)*k即可

别的做法基本都卡了- -

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int cnt;long long n,k;int main(){long long i;while(cin>>n>>k,n||k){for(i=2;i<=k;i++){long long temp=(n+i-1)/i;if(temp<=i){n=temp*k;break;}n=temp*i;}printf("Case #%d: %lld\n",++cnt,n);}return 0;}


0 0