C++资料复习
1030 棋盘上的麦粒
Description
舍罕是古印度的国王,据说他十分好玩。宰相依达尔为了讨好国王,发明了现今的国际象棋献给国王。国王非常喜欢,决定嘉奖宰相,许诺满足宰相提出的任何要求。宰相指着棋盘要求:“陛下,请您按棋盘的格子赏赐我一点小麦吧,第一个小格赏我1粒麦子,第二个小格赏我2粒,第三个小格赏4粒,以后每一小格都比前一个小格赏的麦子增加一倍,只要把棋盘上全部64个小格按这样的方法得到的麦子都赏赐给我,我就心满意足了”。国王听了宰相这个“小小”的要求,马上同意了。 结果在给宰相麦子时,国王发现他要付出的比自己想象的要多得多,于是进行了计算,结果令他大惊失色。问题是:舍罕王的计算结果是多少粒麦子。
Input
输入一个整数n代表棋盘的格子,该数字大于1且小于等于64。如输入2,则表示有2个格子,第一个格子放1粒,第二个格子放2粒,则2个格子一共需要3粒麦子。
Output
输出n个格子需要的麦粒数。
Sample Input
64
Sample Output
18446744073709551615
HINT
如果麦粒数sum如下定义:
unsigned __int64 sum;
则计算完成后其输出形式为:
printf(\
C++资料复习
#include
int i,m,a;
unsigned __int64 s=0; scanf(\for(i=0;i a=pow(2,i); s+=a; } printf(\return 0; C++资料复习 1031 数据逆序显示 Description 输入一个任意长度的正整数,将该数逆序输出。如,输入正数237,则逆序显示的结果为732。如输入230,则逆序显示的结果为32。 Input 输入一个正整数 Output 该数的逆序显示结果(数字最前面的0不显示,如340反转后。要求输出为43,而不是043) Sample Input 123 Sample Output 321 #include int a,b; scanf(\if(a==0) a=a/10; while(a>0) { } b=a; printf(\a=a/10; printf(\return 0; C++资料复习 1032 各位数字求和 Description 编写一个程序,输入一个正整数,然后计算组成该数的各位数字的和。如,输入正数237,其各位的数字分别为2,3,7,加起来的和应该为2+3+7=12。 Input 输入一个正整数。 Output 输出各位数字的和 Sample Input 1234 Sample Output 10 #include scanf(\if(a==0) a=a/10; while(a>0) { b=a; c+=b; a=a/10; } printf(\return 0; C++资料复习 1033 计算最高位数字 Description 输入一个任意长度的正整数,求出其最高位数字。如,输入237,则最高位数字为2。 Input 输入一个正整数。 Output 输出最高位数字 Sample Input 4756 Sample Output 4 #include scanf(\if(a==0) a=a/10; while(!(a>=0&&a<=9)) { } a=a/10; printf(\return 0;