PAT乙级—1002. 写出这个数 (20)-native
2016-06-12 13:52
387 查看
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
题目链接:
思路:由于n的范围是10的100次方,所以我们用数组保存输入的自然数,将每一位转换成数字后加起来,将加起来的总和的各个数字分离,作为下标对应汉语拼音数组中的下标输出出来即可。
题目链接:
https://www.patest.cn/contests/pat-b-practise/1002
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
题目链接:
思路:由于n的范围是10的100次方,所以我们用数组保存输入的自然数,将每一位转换成数字后加起来,将加起来的总和的各个数字分离,作为下标对应汉语拼音数组中的下标输出出来即可。
#include<iostream> using namespace std; int main() { char a[100]; int c[100]; string b[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; int sum=0; int n,j=0; cin>>a; int k2; while(a[j]<='9'&&a[j]>='0') //计算出输入字符的个数 { k2++; j++; } for(int i=0;i<k2;i++) //把各位转换成数字并计算出总和 { n=a[i]-'0'; sum+=n; } int k=0,l=0; while(sum) { c[k++]=sum%10; //将总和的数字拆分逆向放到c数组里 sum/=10; } int temp=0; temp=c[k-1]; cout<<b[temp]; //再次逆向求出c数组每一个数对应在b数组中的位置 for(int i=k-2;i>=0;i--) { temp=c[i]; cout<<" "<<b[temp]; } return 0; }
题目链接:
https://www.patest.cn/contests/pat-b-practise/1002
相关文章推荐
- 常用的算法
- NOIP2015提高组第二题信息传递[图论]
- 【linux】yum本地源制作
- mysql group by
- pouchdb Conflicts
- iOS开发:仿支付宝界面拖拽按钮动画
- js 使用widow对象设置父界面链接
- 实现支付宝账单功能
- JavaScriptCore基本概念和基本使用(Swift)
- Android ORM 框架之 greenDAO
- Android ORM 框架之 greenDAO
- Android ORM 框架之 greenDAO
- mysql 联合2个列的数据 然后呈现出来
- PRO2-Day2
- USACO-Controlling Companies
- libuv学习笔记(6)
- mq完成代码是 2,原因为 2009
- C语言位运算符:与、或、异或、取反、左移与右移介绍
- 游戏中图片格式的选取
- SQLSERVER排查CPU占用高的情况