今天下午在洛谷刷了下午的问题。 话说回来,这个问题确实很有趣,思路也很清晰,但是提交的时候总是出现问题,这很痛苦。
虽然不能交流提交,但是在磨练问题的时候也可以学到很多东西。 今天下午我明白了几个重要的点。
第一点:是itoa(int,char *,int )函数,起到该函数作用的三个参数分别表示整数、字符数组、最后一位表示进制数
此函数的作用是将第一个参数转换为第三个参数指定的进制数,并将其存储在第二个参数字符数组中
你为什么要说这个函数? 这个函数会折磨人。 本来,程序用这个函数写比较好,但是提交的时候出现了问题。itoa是广泛使用的非标准C语言和C++语言扩展功能。但因为它是一个非标准的C / C++语言功能,因此不能好好的被所有编译器使用,所以提交时在云中找不到此函数。 没办法。 这个问题只能从头开始,所以这个函数给我的印象很深。 所以,在今后的程序中是尽量避免使用非标准语言功能。
3358 www.Sina.com/: http://www.Sina.com /。 也许是本人没怎么做问题,今天看大人物的代码,偶然看到了使用结构体结构方法的大人物。 本质上结构体和等级很相似,所以有结构方法也是理所当然的,但是因为没有使用过结构体的结构方法,所以在此进行总结
第二点:新的get到达了一个数据类型。 是结构体自身拥有构造方法。 今天也在程序上偶然看到了。 register型存在于寄存器中,所以读写速度快,适合频繁操作的数据。
最后把今晚做的例题记录下来吧。 有一个有着优秀代码的大人物。 把这个问题记录下来吧。 接下来有时间研究:
第三点
回文数是指从左向右读和从右向左读都是相同的数量。 例如12321是典型的回文数。
给定1进制b(2=b=20,用10进制表示) ),1以上300以下(用10进制表示),将其平方用b进制表示时为回文数的数全部输出。 ’a’、’b’……表示10、11等
输入输出格式
输入格式:
在一行中,一个独立的整数b(b用十进制表示。
register类型
每行满足两个b进制要求的数字。 第二个数是第一个数的平方,第二个数是回文数。
输入输出样本
输入样本#1:
10
题目描述
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
输出格式:
# include cstdio # include cstring # includealgorithmusingnamespacestd; int b; inlinecharc(intx ) if ) x=0x=9) return x '0); return x-10 'A '; }struct node{ int l,a[20]; //进制的最大长度为17node(intx ) for ) l=0; x; l ) A(L )=x%B,x/=b; (/)转换进制数。 其中,a[l-1]是最上位,a[0]是最下位void out ) ) for(intI=L-1; i=0; i-- ) printf('%c ',c ) c(a[i] ); bool tf (按从高到低的顺序输出() ) for ) intI=0; il; I ) if ) a[I]!=a[L-I-1](returnfalse; 返回真; //判断该数字是否为回文数,注意i=l/2可以加速,减少冗馀运算}; int main () Scanf ) ' %d ',b ); for(intI=1; i=300; I//1到300暴力列举{noden(I*I ); //I*I转换为b的整数if (n.TF ) ) ) nodem ) I ); m.out (; putchar (' ); n.out (; putchar((n ) ); (//n为b进制回文数时,输出回答) } return 0; }