Increase and Copy (1100)

 1 /**\
 2 https://codeforces.com/contest/1426/problem/C
 3 先自增再进行复制,这样最优,把一个数从1变成x,需要x-1次。
 4 然后暴力枚举一遍,找到最小值就行了
 5 \**/
 6 #include <bits/stdc++.h>
 7 using namespace std;
 8 #define fi first
 9 #define se second
10 #define go continue
11 #define int long long
12 #define PII pair<int, int>
13 #define sf(x) scanf("%lld",&x)
14 #define ytz int _; sf(_); while(_--)
15 #define fory(i,a,b) for(int i = a; i <= b; ++i)
16 #define forl(i,a,b) for(int i = a; i >= b; --i)
17 #define debug(a) cout << #a << " = " << a <<endl;
18 signed main()
19 {
20     ytz
21     {
22         int n;
23         sf(n);
24         int ans = 1e18;
25         fory(i, 1, n)
26         {
27             int cnt = i - 1;
28             cnt += (n - i) / i;
29             if(n % i) cnt++; //没有取干净
30             if(cnt <= ans) ans  = cnt;
31             else break; //不然就开始自增了,直接break
32         }
33         printf("%lld\n", ans);
34     }
35     return 0;
36 }

 

posted @ 2022-03-03 22:10  std&ice  阅读(51)  评论(0编辑  收藏  举报