新手天翼
1740 密码变换
经验值:800 时间限制:1000毫秒
题目描述 Description
小王同学设置了一密码变换规则如下:一个正整数对应一个字符;如果该数求余123的值在97-122范围,变换为ASCII为该余数对应的小写字符;如果变换不了小写字符,将该数求余91,若余数在65-90范围,变换为ASCII为该余数对应的大写字符;如果变换不了字母,将该数求余58,若余数在48-57范围内,变换为ASCII为该余数对应的数字字符;如果变换不了大小写及数字字符,变换为“\ ”。输入一个正整数,输出变换后的字符。
输入描述 Input Description
输入一个正整数n(1<=n<=1000)表示原始密码。
输出描述 Output Description
输出变换后的密码。
样例输入 Sample Input
42
样例输出 Sample Output
\
新手启示者
定义n;
输入n;
if(n%123>=97&&n%123<=122){
cout<<(char)(n%123);
}
else if(n%91>=65&&n%91<=90){
cout<<(char)(n%91);
}
else if(n%58>=48&&n%58<=57){
cout<<(char)(n%58);
}
else{
cout<<(char)(92);
}
新手启示者
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
char a[1000], b[1000];
cin >> n;
cin >> a;
sort(a, a + n);
for (int i = 0; i < n; i++) b[n - i - 1] = a[i];
int t = 1;
while (strcmp(a, b)) {
t++;
for (int i = 0; i < n; i++) cout << a[i];
cout << endl;
next_permutation(a, a + n);
}
for (int i = 0; i < n; i++)cout << b[i];
cout << endl;
cout << t;
return 0;
}