hdu 4608 I
来源:互联网 发布:路由器怎么设置网络快 编辑:程序博客网 时间:2024/06/06 08:57
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.
The following T lines describe all the queries, each with a positive integer x. The length of x will not exceed 10 5.
1202
208
题意:
找到大于给定值的一个数,这个数各位之和是10的倍数。
坑爹的地方:
10的5次方是数的长度不是数的大小,所以要用高精度来做,时间有5s,直接暴力跑就能过。
(刚开始打表用二分做的,没看到是数的长度而不是大小)
#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
- hdu 4608 I-number
- hdu 4608 I-number
- hdu 4608 I-number
- hdu 4608 I-number
- HDU 4608 I-number
- hdu 4608 I-number
- hdu 4608 I
- hdu 4608 I-number 模拟
- hdu 4608 I-number 模拟
- HDU 4608 I-number(YY)
- 2013 多校联合 I I-number(hdu 4608)
- HDU 4608 I-number 解题报告
- hdu - 4608 - I-number(暴力枚举)
- hdu 4608——I-number
- 杭电 HDU 4608 I-number
- HDU 4608 I-number (数学&字符串处理)
- HDU 4608 I-number(模拟)
- hdu 4608 I-number(水)
- LintCode天梯(USGiants)-String
- spring+zookeeper+dubbo使用实例
- 【《Real-Time Rendering 3rd》 提炼总结】(二) 第二章 图形渲染管线 The Graphics Rendering Pipeline
- 数组与指针
- Codeforces803D Magazine Ad
- hdu 4608 I
- Translate
- 浅议MySQL数值范围问题
- Qt模仿IOS滑动按钮
- Java Class Object
- ios 自定义带下划线的tab切换按钮
- hdu4602_Partition_思维+递推+快速幂
- 欢迎使用CSDN-markdown编辑器
- jQuery来了--添加元素,删除元素