csu 10月 月赛 J 题
2024-10-18 06:23:03
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
今天的水题特别多,我们A了6题,不错,纪念下;
这也是个水题,纯模拟;
这个题稍微有点繁琐,为了锻炼自己的逻辑,还是硬着头皮敲了遍;
代码:
#include<cstdio>
#include<cstring>
using namespace std;
char s[];
int l,t,ce;
bool flag,ff;
int check()
{
for(int i=; i<l; i++)if(s[i]!=''&&s[i]==s[i-])return i;
return ;
}
void add(int ce)
{
s[ce]++;
while(s[ce]>'')
{
if(ce==)
{
flag=;
s[ce]='';
break;
}
s[ce]='';
s[--ce]++;
}
}
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%s",&s);
if(s[]=='-'){puts("");continue;}
l=strlen(s);
flag=,ff=;
add(l-);
if(l>)while()
{
int ce=check();
if(ce==)break;
if(ff)
{
for(int i=ce+; i<l; i++)s[i]='';
ff=;
}
add(ce);
}
if(flag)printf("");
puts(s);
}
return ;
}
最新文章
- 1. 使用Filter 作为控制器
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
- knockout学习笔记10:demo
- JavaScript学习08 Cookie对象
- BZOJ 1009 【HNOI2008】 GT考试
- 2013年Linux周刊读者投票出炉 Ubuntu、Android榜上有名
- Configuration.ConfigurationSettings.AppSettings已过时
- python流程控制语句 ifelse - 4
- 从零开始学ios开发(十七):Storyboards(上)
- hive,spark的远程调试设置
- ExtJs store加载
- QT5 TK1 串口通信
- 树莓派远程桌面配置-开机自启SSH
- js的call和apply拾遗
- 虚拟机下 centos7 无法连接网络
- efcore数据库自动生成
- 图的最短路径-----------SPFA算法详解(TjuOj2831_Wormholes)
- robot_pose的类型
- datanode启动失败
- Ubuntu16.04上安装neo4j数据库