“师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 F.校赛~校赛~【思维+规律题】
2017-06-05 11:52
633 查看
校赛~校赛~
Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic
Problem Description
SDUT 的校赛是从 2009 年开始的,康纳每年看到比赛之后,往往就会喊一声 “ma ji ya ba ku nai + 年份的缩写”。比如说 2009 年就会说 “ma ji ya ba ku nai 9”。年份的缩写是一个字符串形式的,但是如果当前选择的字符串以前已经被用过,就会再向前继续取,比如说 2019 年的话康纳一开始会选择 9 但是 9 已经被用过了,所以就会向前多加一位缩写为 19,于是就会说 “maji ya ba ku nai 19”,2100 年的话 0 被使用过了康纳就会说 “ma ji ya ba ku nai 00”。2119 年的话 9, 19 都被使用过了,所以缩写便是 119。于是就会说 “ma ji ya ba ku nai 119”。然后现在告诉你康纳喊的话的内容,你需要告诉康纳现在是哪一年的校赛。
看她这么萌~你还不赶快告诉她么~
Input
输入数据有多组(数据组数不超过 3),到 EOF 结束。对于每组数据:
首先输入一行 n (1 <= n <= 100000),表示康纳喊话的次数
接下来 n 行,每行一个字符串,代表康纳喊话的内容。保证其中缩写的年份的字符串内容长度不超过 9
Output
对于每组输入,输出 n 行,每行输出一个整数表示康纳喊话中年份缩写所代表的具体年份。
Example Input
5 ma ji ya ba ku nai 9 ma ji ya ba ku nai 19 ma ji ya ba ku nai 99 ma ji ya ba ku nai 00 ma ji ya ba ku nai 2017
Example Output
2009 2019 2099 2100 12017
Hint
Author
「“师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛」UMR思路:
我们分类讨论不难发现有:
Len==1.ans:【2009~2018】,当数字为9的时候,结果是2009.其余的答案是2010+这个数字。
Len==2.ans:【2019~2118】,当数字小于19的时候,结果是2100+这个数字,其余答案就是2000+这个数字。
Len==3.ans:【2119~3118】,当数字小于119的时候,结果是3000+这个数字,其余答案就是2000+这个数字。
Len==4.ans:【3119~13118】,当数字小于3119的时候,结果是10000+这个,否则答案就是本身。
再之后就是依次类推,结果是1e(len+1)+这个数字,以及其本身两种。
Ac代码:
#include<stdio.h>
#include<string.h>
using namespace std;
#define ll long long int
int main()
{
ll t;
while(~scanf("%lld",&t))
{
while(t--)
{
char a[15];
for(ll i=0;i<7;i++)scanf("%s",a);
ll len=strlen(a);
ll sum=0;
for(ll i=0;i<len;i++)
{
sum=sum*10+a[i]-'0';
}
if(len==1)
{
if(sum==9)printf("2009\n");
else printf("201%lld\n",sum);
}
else if(len==2)
{
if(sum>=19)printf("20%lld\n",sum);
else printf("21%s\n",a);
}
else if(len==3)
{
if(sum>=119)printf("2%lld\n",sum);
else printf("3%s\n",a);
}
else if(len==4)
{
if(sum>=3119)printf("%lld\n",sum);
else printf("1%s\n",a);
}
else if(len==5)
{
if(sum>=13119)printf("%lld\n",sum);
else printf("1%s\n",a);
}
if(len==6)
{
if(sum>=113119)printf("%lld\n",sum);
else printf("1%s\n",a);
}
if(len==7)
{
if(sum>=1113119)printf("%lld\n",sum);
else printf("1%s\n",a);
}
if(len==8)
{
if(sum>=11113119)printf("%lld\n",sum);
else printf("1%s\n",a);
}
if(len==9)
{
if(sum>=111113119)printf("%lld\n",sum);
else printf("1%s\n",a);
}
}
}
}
相关文章推荐
- “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 G.打字【Dp+贪心】水题
- “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 I.皮卡丘的梦想2【树状数组】水题
- “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛【9/10】
- “师创杯”山东理工大学第九届ACM程序设计竞赛 热身赛 D.疯狂的bLue【思维+DAG图上的最短路】
- “师创杯”山东理工大学第九届ACM程序设计竞赛 热身赛 E.上色的纱雾【二分+贪心】
- 师创杯”山东理工大学第九届ACM程序设计竞赛(网络同步赛)--I皮卡丘的梦想2
- “师创杯”山东理工大学第九届ACM程序设计竞赛
- “师创杯”SDUT-ACM校赛正式赛-从零开始的异世界生活
- 郑大第九届校赛正式赛(1812: sort)
- 2016河南省第九届ACM程序设计竞赛[正式赛四]
- 郑大第九届校赛正式赛(1818: squee_spoon and his Cube VI)
- 郑大第九届校赛正式赛(1819: 加加加!(油))
- 郑大第九届校赛-正式赛-zzulioj-1815-easy problem
- 第九届山东理工大学ACM网络编程擂台赛 正式赛 sdut4080 UMR's dress
- 第九届ACM趣味程序设计竞赛第二场(正式赛) B - 绿帽自动机【思维】
- 郑大第九届校赛-正式赛-zzulioj-1812-sort
- 山东理工大学2017校赛 3930皮卡丘的梦想2—线段树加状压 3926bLue的二叉树-KMP或hash 3914校赛~校赛~-打表找规律
- 第九届山东理工大学ACM网络编程擂台赛 正式赛 sdut4075GCD - ldq的黑心啤酒厂
- “师创杯”SDUT-ACM校赛正式赛-C~K玩游戏
- 2016河南省第九届ACM程序设计竞赛【正式赛真题】