UVa11636 - Hello World! (水題)

題目大意:

一開始給你一段句子,你只能透過 「複製 (copy)」 方式,複製出 x 段句子

給你一數字 x ,試問在幾次後可以複製可達到 x 個句子?

分析:

只需要不斷複製 *2 即可完成,每一次都可以全句複製已達到複製的兩倍量。

再透過陣列預先處理即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <bits/stdc++.h>
#define LOCAL
using namespace std;
int num[10010] ;


int main()
{
#ifdef LOCAL
freopen("in1.txt" , "r" , stdin);
freopen("out.txt" , "w" , stdout);
#endif // LOCAL
int n = 1 , step = 0 ;
for(int i = 1 ; i < 10010 ; i++){
num[i] = step ;
if(i == n){
n = n << 1;
step++;
}
}
step = 1;
while(cin >> n && n >= -1){
cout << "Case " << step << ": " << num[n] << '\n' ;
step++;
}

return 0;
}
  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: