%---格式说明引导符。
----指定左对齐输出。
0---指定空位填零。
m.n --- 指定输出域宽度及精度。
l.h---输出长度的修正。
格式字符:
%i---输出一个整型数;
%d---输出一个整型数;
%f---输出一个浮点数;
%e---输出一个浮点数,科学计数法;
%g---输出一个浮点数,当指数小于-4或者大于5,则运用科学计数法,否则正常显示浮点数;
%c---输出一个字符;
%o---输出一个八进制的整型数,前面不带0;
%#o---输出一个八进制的整型数,前面带0;
%x---输出一个十六进制的整型数,前面不带0x;
%#x---输出一个十六进制的整型数,前面带0x, 如果x大写,则显示的时候也是大写。
%u---不带符号的十进制整数。
%%---输出一个%.
转义字符:
\a:蜂鸣,响铃
\b:回退:向后退一格
\f:换页
\n:换行,光标到下行行首
\r:回车,光标到本行行首
\t:水平制表
\v:垂直制表
\:反斜杠
\':单引号
\":双引号
\?:问号
\ddd:三位八进制
\xhh:二位十六进制
\0:空字符(NULL),什么都不做
printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
% 在Java中是取余数的意思。上述条件表达式的字面意思是
m除于x 的语数 如果等于0 表达式结果是真 否则为假。
可以理解为 如果 m能被x 整除 为真 否则为假。
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。输入格式:
输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。
输出格式:
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。
输入样例:
3 7417
1.
输出样例:
pat
1.
上代码!!!
#include<stdio.h>
#include<math.h>
int main()
{/*
我们可以把a-z看成26进制,0表示a,25表示z。(类比,2进制每一位最多为1,16进制每位最多到15)
L位,那么可以表示26^L个数。(类比,3位2进制,可以表示0到7,一共8个数)
那么L位能表示0-26^L-1,求倒数第n个数,也就是求数字26^L-1-n+1=26^L-n
(26^L-n是第26^L-n+1个数字)
令p=26^L-n,然后把10进制转为26进制就行(就是不断%26,/26)(0代表a,25代表z)
然后输出结果,有可能位数L很大,所以在不够L的位上补'a'
*/
int L,N,y //L控制多少个字母组成 N控制输出倒数第N个
int i,x // i控制循环次数 x
scanf("%d",&L)
scanf("%d",&N)
N=N-1
for(i=1i<=Li++)
{
y=N/(pow(26,L-i)) //pow(2,3) 即2的3次方 这里是26的L-i次方
printf("%c",'z'-y)
x=pow(26,L-i)
N=N%x
}
return 0
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.