年龄巧合分离数,报时助手字符串数组,大数加法
2016-03-16 08:29
323 查看
标题:年龄巧合
小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是2014年,并且,小明说的年龄指的是周岁。
请推断并填写出小明的出生年份。
这是一个4位整数,请通过浏览器提交答案,不要填写任何多余的内容(比如,他表弟的出生年份,或是他们的年龄等等)
报时助手
问题描述
给定当前的时间,请用英文的读法将它读出来。
时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。
如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
时和分的读法使用的是英文数字的读法,其中0~20读作:
0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
30读作thirty,40读作forty,50读作fifty。
对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。
输入格式
输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen
思路:将h和m分别调用
大数加法
问题描述
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
算法描述
由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。
计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
最后将C输出即可。
输入格式
输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
输出格式
输出一行,表示a + b的值。
样例输入
20100122201001221234567890
2010012220100122
样例输出
20100122203011233454668012
小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是2014年,并且,小明说的年龄指的是周岁。
请推断并填写出小明的出生年份。
这是一个4位整数,请通过浏览器提交答案,不要填写任何多余的内容(比如,他表弟的出生年份,或是他们的年龄等等)
#include <iostream> using namespace std; int main() { int a,b,c,d; for(int i=1900; i<=2014; i++) { a=i/1000; b=i/100%10; c=i/10%10; d=i%10; if(a+b+c+d==2014-i) cout<<i<<endl; } return 0; }
报时助手
问题描述
给定当前的时间,请用英文的读法将它读出来。
时间用时h和分m表示,在英文的读法中,读一个时间的方法是:
如果m为0,则将时读出来,然后加上“o'clock”,如3:00读作“three o'clock”。
如果m不为0,则将时读出来,然后将分读出来,如5:30读作“five thirty”。
时和分的读法使用的是英文数字的读法,其中0~20读作:
0:zero, 1: one, 2:two, 3:three, 4:four, 5:five, 6:six, 7:seven, 8:eight, 9:nine, 10:ten, 11:eleven, 12:twelve, 13:thirteen, 14:fourteen, 15:fifteen, 16:sixteen, 17:seventeen, 18:eighteen, 19:nineteen, 20:twenty。
30读作thirty,40读作forty,50读作fifty。
对于大于20小于60的数字,首先读整十的数,然后再加上个位数。如31首先读30再加1的读法,读作“thirty one”。
按上面的规则21:54读作“twenty one fifty four”,9:07读作“nine seven”,0:15读作“zero fifteen”。
输入格式
输入包含两个非负整数h和m,表示时间的时和分。非零的数字前没有前导0。h小于24,m小于60。
输出格式
输出时间时刻的英文。
样例输入
0 15
样例输出
zero fifteen
思路:将h和m分别调用
#include <iostream> using namespace std; string en[]= {"zero","one", "two","three","four","five","six","seven","eight","nine","ten", "eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty", "thirty","forty","fifty" }; string r="o'clock"; int h,m; void numtoen(int n) { if(n<=20) cout<<en <<" "; else{ int gao=n/10; int di=n%10; cout<<en[gao+18]<<" "; if(di!=0) { cout<<en[gao+18]<<" "<<en[di]<<" "; } } } void output(int h,int m) { if(m==0) { numtoen(h); cout<<r; cout<<endl; } else{ numtoen(h); numtoen(m); cout<<endl; } } int main() { cin>>h>>m; output(h,m); return 0; }
大数加法
问题描述
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
算法描述
由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。
定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。
计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
最后将C输出即可。
输入格式
输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
输出格式
输出一行,表示a + b的值。
样例输入
20100122201001221234567890
2010012220100122
样例输出
20100122203011233454668012
#include <iostream> #include<cstdio> #include<string.h> using namespace std; char a[102],b[102]; int sum[103]; int main() { scanf("%s%s",a,b); int i,j; int lena=strlen(a); int lenb=strlen(b); for(i=0; i<lena; i++) sum[i]=a[lena-1-i]-'0'; for(i=0; i<lenb; i++) sum[i]+=b[lenb-1-i]-'0';///求出了个位,十位,百位和 for(j=0; j<104; j++) { if(sum[j]>9) { sum[j+1]+=sum[j]/10; sum[j]%=10; } } i=104; while(sum[i]==0)///用while而不是if i--; for(int k=i; k>=0; k--) cout<<sum[k]; return 0; }
相关文章推荐
- lintcode-medium-Combinations
- 再谈百度:KPI、无人机,以及一个必须给父母看的案例
- 欢迎使用CSDN-markdown编辑器
- [HNOI2012]与非 解题报告
- (四)ExtJs自定义弹出框(show)
- thread
- POJ 3187 Backward Digit Sums (全排列)
- ORA-39143: 转储文件可能是原始的导出转储文件
- [3.16]竞赛入门经典,习题2-6
- IMP-00032:SQL 语句超过缓冲区长度的问题解决
- Docker 入门到实践笔记2
- POJ 3061 Subsequence (尺取)
- 2016写点blog
- 电子邮件营销在数字营销浪潮中扮演关键角色
- bzoj2434: [Noi2011]阿狸的打字机
- HDOJ 1220 Cube (数学)
- Windows Server 2008 R2配置JSP网站无法访问
- HDOJ 1027 Ignatius and the Princess II (DFS全排列)
- iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值
- CSS 有趣的边框