• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
HaibaraAi
博客园    首页    新随笔    联系   管理    订阅  订阅

Contest2037 - CSU Monthly 2013 Oct (problem J 1327 :Scholarship)

 

 

你为何这么叼!

 

1327: Scholarship

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 291  Solved: 75
[Submit][Status][Web Board]

 

Description

 

CSU又到了一年中评奖学金的时候了……各大学霸都或多或少地拿到了各种奖学金(你们自己看着办吧)。

在这里,评奖学金有个很奇怪的规矩——每个同学得到的奖学金数一定满足相邻的两个非零数位上的数字不相等(奖学金都是非负整数,如果一个同学没有得到奖学金,我们也可以认为学校发给ta的奖学金为0)。

然而,如果你问这里的孩子拿了多少奖学金,ta不会直接告诉你拿到了多少奖学金,而会告诉你ta拿到的奖学金数大于某一个整数X。同时为了不产生歧义,ta所说的那个数和ta所拿到的那个奖学金数目之间不会存在任何一个数满足学校发奖的规矩。

现在你已经知道了每个同学说的那个整数X,你能确切地说出每个同学得到了多少奖学金吗?

 

 

 

Input

 

一组测试数据。

第一个数N,表示接下来有N个同学告诉了你ta的获奖信息(N<10000) 

接下来每行一个整数X,表示一名同学所说的那个整数X。(X不超过int范围)

 

 

Output

 

总共N行,每行一个数,表示该同学拿到了多少奖学金。

题目保证每个同学实际拿到的奖学金数目不会超过10 ^8。(Orz,学霸啊)

 

 

Sample Input

 

5
1
10
20
98
15995112

 

Sample Output

 

2
12
21
100
16000000

 

HINT

 

 对于64位整形,请用%lld,或者cin,cout。T_T

 

CSU_LQ

 

Source

 

CSU Monthly 2013 Oct.

 

一道煞笔题能WA一下午,你TM在逗我!

 

 1 #include <cstdio>
 2 #include <vector>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 #define INF 0x7fffffff
 7 #define maxn 1005
 8 #define mod 1000000007
 9 int x,n,m;
10 int a[15];
11 int d[15];
12 void judge(){
13     int b[15]={0};
14     memset(d,0,sizeof d);
15     int i=0;
16     while(x){b[i++]=x%10;x/=10;}
17     int k=i;
18     for(int i=1;i<=k;i++)d[i]=b[k-i];
19     for(i=1;i<k&&i>=0;)
20         if(d[i]==d[i+1]&&d[i]!=0){
21             d[i+1]=(d[i+1]+1)%10;
22             while(d[i+1]==0&&i>=0){d[i]=(d[i]+1)%10;i--;}
23             if(d[i]!=d[i+1])break;
24         }
25         else i++;
26     x=0;
27     for(int j=0;j<=i+1;j++)x=x+d[j]*a[k-j];
28 }
29 int main(){
30     a[0]=1;
31     for(int i=1;i<10;i++)a[i]=a[i-1]*10;
32     scanf("%d",&n);
33     while(n--){
34         scanf("%d",&x);
35         if(x<0){printf("0\n");continue;}
36         x++;
37         judge();
38         printf("%d\n",x);
39     }
40     return 0;
41 }
View Code 2013-10-05 18:19:51 

 

posted @ 2013-10-05 18:22  HaibaraAi  阅读(129)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3