1002. 写出这个数 (20) PAT
来源:互联网 发布:vc 6.0 安装包 知乎 编辑:程序博客网 时间:2024/05/29 14:36
1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
#include <cstdio>#include <string>#include <iostream>using namespace std;string number[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};struct num{int digit[1000];int size;void init(){size=0;for(int i=0;i<1000;i++){digit[i]=0;}}void add(int x){if(size==0){digit[size]=x;size++;return;}digit[0]+=x;int temp=0;for(int i=0;i<size;i++){digit[i]=digit[i]+temp;if(digit[i]<1000){ temp=0;}if(digit[i]>=1000){temp=digit[i]/1000;//printf("temp:%d digit[i]:%d\n",temp,digit[i]);digit[i]=digit[i]%1000;//printf("i:%d ---digit[i]:%d\n",i,digit[i]);}}if(temp!=0){digit[size++]=temp;}}void print(){ printf("size:%d\n",size);for(int i=size-1;i>=0;i--){printf("%d",digit[i]);}printf("\n");} void printhzi(){ int first=0; for(int i=size-1;i>=0;i--){ int temp; if(digit[i]>=100){ int tag1=100; for(int j=0;j<3;j++){ temp=digit[i]/tag1; digit[i]=digit[i]%tag1; tag1=tag1/10; if(first==0){ cout<<number[temp]; first=1; }else{ cout<<" "<<number[temp]; } } }else if(digit[i]>=10){ int tag2=10; for(int j=0;j<2;j++){ temp=digit[i]/tag2; digit[i]=digit[i]%tag2; tag2=tag2/10; if(first==0){ cout<<number[temp]; first=1; }else{ cout<<" "<<number[temp]; } } }else{ temp=digit[i]; if(first==0){ cout<<number[temp]; first=1; }else{ cout<<" "<<number[temp]; } } } }};struct num inum;int main(){char n;inum.init();while(scanf("%c",&n)&&n!='\n'){inum.add(n-'0');}//inum.print();inum.printhzi();return 0;}
0 0
- PAT 1002. 写出这个数 (20)
- PAT - 1002. 写出这个数 (20)
- [PAT]1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- 【PAT】 1002. 写出这个数 (20)
- PAT(B)1002. 写出这个数 (20)
- [PAT]1002.写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- PAT Basic 1002. 写出这个数 (20)
- PAT 乙级 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- PAT 乙 1002. 写出这个数 (20)
- Java - PAT - 1002. 写出这个数 (20)
- PAT-乙级-1002. 写出这个数 (20)
- PAT乙级.1002. 写出这个数 (20)
- PAT乙级 1002. 写出这个数 (20)
- Intellij IDEA的Hibernate简单应用
- C#:SQLite项目搭建
- linux命令
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑合辑
- 安装npm包的时候出现unable to get local issuer certificate的错误解决办法
- 1002. 写出这个数 (20) PAT
- String 与inputString 互转方法
- Chapter12——请比较函数重载和虚函数在概念上和使用方式有什么区别
- 不使用XML来创建SqlSessionFactory
- 续安装好composer和workerman之后;TP5运行workerman的操作
- 最近做了一道恶心的题目
- Windows I/O操作
- 补c++第四次作业
- 手机两种获取IP的方式WiFi和 GPRS