题的链接:P1603 斯诺登的密码
题解: 先将题目的数字字符串保存,再将数字字符串对应的数字的平方后对100取余的结果一一对应的保存到int型数组;然后在输入的时候去判断是不是出现了数字,出现了数字则将数字存到另一个数组,然后将其排序,从小到大;最后输出,输出最小的一个数,即直接将排好序的全部输出即可;
细节:
第一位不能是0,是0的直接跳过;后面的如果是一位数,要有前导0,eg: 09;可以用printf("%02d",a),解决;如果没有数字,则直接输出0,可以用flag做标记判断。
参考代码:
#include <iostream>
#include <algorithm>
using namespace std
;
string str
[30] = {"zero","one","two","three","four","five","six","seven",
"eight","nine","ten","eleven","twelve","thirteen","fourteen",
"fifteen","sixteen","seventeen","eighteen","nineteen","twenty",
"a","both","another","first","second","third"};
int W
[30] = {0,1,4,9,16,25,36,49,64,81,00,21,44,69,96,25,56,89,24,61,0,1,4,
1,1,4,9};
string s
;
int D
[30], j
;
int main()
{
while(cin
>> s
&& s
!= ".")
{
for(int i
= 0; i
<= 26; i
++)
{
if(str
[i
] == s
)
{
D
[j
++] = W
[i
];
break;
}
}
}
sort(D
, D
+ j
);
int flag
= 1;
for(int i
= 0; i
< j
; i
++)
{
if(flag
)
{
if(D
[i
]) cout
<< D
[i
], flag
= 0;
}
else printf("%02d",D
[i
]);
}
if(flag
) cout
<< 0;
return 0;
}
转载请注明原文地址: https://mac.8miu.com/read-484129.html