hdu4608_I-number_高精度+暴力
来源:互联网 发布:tc编程案例 编辑:程序博客网 时间:2024/05/21 22:57
I-number
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4215 Accepted Submission(s): 1487
Problem Description
The I-number of x is defined to be an integer y, which satisfied the the conditions below:
1. y>x;
2. the sum of each digit of y(under base 10) is the multiple of 10;
3. among all integers that satisfy the two conditions above, y shouble be the minimum.
Given x, you're required to calculate the I-number of x.
1. y>x;
2. the sum of each digit of y(under base 10) is the multiple of 10;
3. among all integers that satisfy the two conditions above, y shouble be the minimum.
Given x, you're required to calculate the I-number of x.
Input
An integer T(T≤100) will exist in the first line of input, indicating the number of test cases.
The following T lines describe all the queries, each with a positive integer x. The length of x will not exceed 105.
The following T lines describe all the queries, each with a positive integer x. The length of x will not exceed 105.
Output
Output the I-number of x for each query.
Sample Input
1202
Sample Output
208
题意:给你t组数,输出每组数对应符合下列要求的数:1.这个数比给的数大; 2.这个数各位加起来为10的倍数;3.这个数尽可能的小;
解:
一看数的长度不超过100000呢,普通的做法肯定不行咯,就用高精度,用char来存数,再暴力往上加1就行了,最多进行10次操作,不会太费时间。
代码:
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>using namespace std;void add(char a[],char b[],char c[])//a+b=c{ int i,e,d; int n,m; char temp; n=strlen(a); m=strlen(b); for(i=0; i<n/2; i++) { temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; }//将a倒置,另外倒置可以写成另外的函数以便节省代码量,后面多次调用 for(i=0; i<m/2; i++) { temp=b[i]; b[i]=b[m-1-i]; b[m-1-i]=temp; }//将b倒置 e=0; for(i=0; i<n&&i<m; i++) { d=a[i]-'0'+b[i]-'0'+e; e=d/10; c[i]=d%10+'0'; }//进行模拟加法 if(i<m) { for(; i<m; i++) { d=b[i]-'0'+e; e=d/10; c[i]=d%10+'0'; } } else { for(; i<n; i++) { d=a[i]-'0'+e; e=d/10; c[i]=d%10+'0'; } }//如果有一个数的位数较多,特殊处理 if(e) {c[i++]=e+'0';n++;m++;}//处理最后一位可以进位的情况 c[i]=0; for(i=0; i<max(n,m)/2; i++) { temp=c[i]; c[i]=c[max(n,m)-1-i]; c[max(n,m)-1-i]=temp; }//倒置n=strlen(a); m=strlen(b); for(i=0; i<n/2; i++) { temp=a[i]; a[i]=a[n-1-i]; a[n-1-i]=temp; }//将a倒置 for(i=0; i<m/2; i++) { temp=b[i]; b[i]=b[m-1-i]; b[m-1-i]=temp; }//将b倒置//此处添加适用于循环的代码}void print(char c[]){ int len=strlen(c); if(c[0]=='0') {for(int i=1;i<len;i++) printf("%c",c[i]); printf("\n"); } else puts(c);}char c[100050],c1[100050],ans3[100050],temp[100050];int main(){ int n; scanf("%d",&n); getchar(); while(n--) { memset(c,0,sizeof(c)); memset(ans3,0,sizeof(ans3)); memset(c1,0,sizeof(c1)); gets(c); int len=strlen(c); for(int i=0;i<len;i++) if(i==len-1) c1[i]='1'; else c1[i]='0'; //puts(c); //456puts(c1); while(1) { add(c,c1,ans3); //puts(ans3); int ans1=0; for(int i=0;i<strlen(ans3);i++) ans1+=ans3[i]-'0'; if(ans1%10==0) { puts(ans3); break; } strcpy(c,ans3); } } return 0;}
0 0
- hdu4608_I-number_高精度+暴力
- hdu 4036 暴力二分 高精度 Rolling Hongshu
- POJ_3252_Round Number_递推
- BZOJ 1002 FJOI 2007 轮状病毒 暴力+找规律+高精度
- POJ 2413 How many Fibs?(高精度暴力)
- EASY_ZJU_PAT_1019_General Palindromic Number_数值转换
- POJ_3292_Semi-prime H number_筛法
- LeetCode_Ugly Number_ 丑陋的数字
- hdu5972_Regular Number_快速匹配+bitset
- 高精度
- 高精度
- 高精度
- 高精度。。
- 高精度
- 高精度
- 高精度
- 高精度
- 高精度
- google c++ 编码规范
- Codeforces gym 101149 G 想法
- java(三)
- 39. Combination Sum
- ButterKnife注解使用配置
- hdu4608_I-number_高精度+暴力
- RHCSA-EXERCISE
- 电商平台结构图
- 设置VMWARE通过桥接方式使用主机无线网卡上网
- 186_08_IO流_FileInputStream__06_available_skip方法
- php preg_match_all() 用法
- ACM 液晶显示屏
- Base64 (HDU
- 启动 cloudera-scm-server服务 出现:Error creating bean with name 'entityManagerFactoryBean':