2014 HDU多校弟八场H题 【找规律把】

时间:2021-02-18 04:49:32

看了解题报告,发现看不懂 QAQ

比较简单的解释是这样的:

可以先暴力下达标,然后会发现当前数 上一个数 的差值是一个 固定值

而且等于当前数与i(第i个数)的商,

于是没有规律的部分暴力解决,有规律的套公式

//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
#include <stdio.h>
#include <iostream>
#include <cstring>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define ll long long
#define Max(a,b) (((a) > (b)) ? (a) : (b))
#define Min(a,b) (((a) < (b)) ? (a) : (b))
#define Abs(x) (((x) > 0) ? (x) : (-(x)))
using namespace std; const int INF = 0x3f3f3f3f;
const int MAXN = ;
const double eps = 1e-; int main() {
ll k, i, y, x, a, b, cnt = , z;
while(cin >> x >> k) {
if(x == && k == ) break;
cout << "Case #" << cnt++ << ": ";
for(i = ; i <= k; ++i) {
y = x;
if(x % i != ){
z = x / i;
++z;
x = z * i;
}
a = x - y;
b = x / i;
if(a == b) break;
}
if(i <= k)
x += (k - i) * b;
cout << x << endl;
}
return ;
}