洛谷P1603 斯诺登的密码 题解

蒟蒻来写题解了

说是水题其实也就是慢慢写能写出来的题吧,这道题有挺多坑的,要注意的点:

1.除了第一位数是个位数,直接输出,其他的个位数都要补0达到两位,例如:925和2509,这里只是单纯讨论输出问题

2.还有一个很多人理解题意容易误解的地方就是925不是比259大吗,为什么输出925,他这里是9和25比较,9比较小,所以就排前面了,和整个数大小无关

3.还有一个坑,读题要仔细,another算1处理,first,a,也算1,both,second算2,third算3

废话不多说,上代码,蒟蒻第一次写洛谷题解,没想到提交不了,只能来CSDN了,欢迎大佬指正错误

#include<bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	int i;
	int t[100]={0};
	for(i=0;i<6;i++)
	{
		cin>>s;
		if(s=="one"||s=="another"||s=="a"||s=="first") t[i]=1;
		if(s=="two"||s=="both"||s=="second") t[i]=2;
		if(s=="three"||s=="third") t[i]=3;
		if(s=="four") t[i]=4;
		if(s=="five") t[i]=5;
		if(s=="six") t[i]=6;
		if(s=="seven") t[i]=7;
		if(s=="eight") t[i]=8;
		if(s=="nine") t[i]=9;
		if(s=="ten") t[i]=10;
		if(s=="eleven") t[i]=11;
		if(s=="twelve") t[i]=12;
		if(s=="thirteen") t[i]=13;
		if(s=="fourteen") t[i]=14;
		if(s=="fifteen") t[i]=15;
		if(s=="sixteen") t[i]=16;
		if(s=="seventeen") t[i]=17;
		if(s=="eighteen") t[i]=18;
		if(s=="nineteen") t[i]=19;
		if(s=="twenty") t[i]=20;
	}
	int j=0,a[7];
	for(i=0;i<6;i++)//把有用的数存在a数组中
	{
		if(t[i]!=0)
		{
			a[j]=t[i];
			++j;
		}
	}
	for(i=0;i<j;i++)
	{
		a[i]=(a[i]*a[i])%100;
	}
	int x;
	for(i=0;i<j-1;i++)//排序
	{
		
		if(a[i]>a[i+1])
		{
			x=a[i];
			a[i]=a[i+1];
			a[i+1]=x;
		}
	}
	int flag=0;
	if(j!=0)
	{
		for(i=0;i<j;i++)
		{
			if(flag)//如果不是第一位
	           {
	                printf("%.2d",a[i]);//限制格式输出
	           }
	       else
	       {
	            if(a[i])
	            {
	                printf("%d",a[i]);
	                flag=1;
	            }
	        }
		}
	}
	else cout<<0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值