首页 > 代码库 > Codeforces Round #392 (Div. 2)

Codeforces Round #392 (Div. 2)

  突然觉得CF的题很锻炼代码能力和反应速度。。更加坚定了我在寒假要多打CF的决心。

  AB都是大水题,直接跳过了。

  C题,很简单的题目,不过感觉细节必须考虑清楚。WA了很多发才过,而且最终代码还很挫。。还特判了n是1和2的情况= =。。代码太挫了就不贴了。

  D题,也是比较简单的贪心,不过感觉直接写for的话可能比较烦= =,借鉴了别人递归的写法,还是挺不错的。代码如下:

技术分享
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <string.h>
 4 #include <iostream>
 5 using namespace std;
 6 typedef long long ll;
 7 
 8 ll base;
 9 char s[100];
10 ll solve(int r)
11 {
12     if(r == 0) return 0;
13     int l = r;
14     ll val = 0;
15     ll t = 1;
16     for(int i=r;i>=1&&t<base;i--,t*=10)
17     {
18         if(val+t*(s[i]-0) < base)
19         {
20             if(s[i] != 0) l = i;
21             val = val + t*(s[i]-0);
22         }
23         else break;
24     }
25     return solve(l-1) * base + val;
26 }
27 
28 int main()
29 {
30     cin >> base;
31     scanf("%s",s+1);
32     cout << solve(strlen(s+1)) << endl;
33     return 0;
34 }
D

 

  还是要提高代码能力啊!

Codeforces Round #392 (Div. 2)