HDU 1230 HDOJ 1230 火星A+B ACM 1230 IN HDU
2010-10-28 19:46
411 查看
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 代码
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
string a, b;
int prim[40] = {1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113};
int x[30], y[30];
int main () {
while ( cin >> a >> b, a != "0" && b != "0" ) {
memset ( x, 0, sizeof(x) );
memset ( y, 0, sizeof(y) );
int j = 1, k = 1;
for ( int i = 0; i < a.size(); ++ i ) {
if ( a[i] != ',' ) {
x[j] = x[j] * 10 + a[i] - '0';
} else {
++ j;
}
}
for ( int i = 0; i < b.size(); ++ i ) {
if ( b[i] != ',' ) {
y[k] = y[k] * 10 + b[i] - '0';
} else {
++ k;
}
}
reverse ( x+1, x + j + 1 );
reverse ( y+1, y + k + 1 );
int f = 0;
int m = j;
int mm = k;
int t = 0;
if ( m > mm ) {
swap ( m, mm );
t = 1;
}
//cout << m << " " << mm << endl;
int z[30];
for ( int i = 1; i <= m; ++ i ) {
z[i] = x[i] + y[i] + f;
f = z[i] / prim[i];
z[i] %= prim[i];
}
z[m+1] = 0;
for ( int i = m + 1; i <= mm; ++ i ) {
int temp = 0;
if ( !t ) temp = y[i];
else temp = x[i];
z[i] = temp + f;
f = z[i] / prim[i];
z[i] %= prim[i];
}
if ( f ) {
z[++mm] = f;
}
for ( int i = mm; i > 0; -- i ) {
printf ( i == mm ? "%d" : ",%d",z[i] );
}
putchar ( 10 );
}
return 0;
}
#include <iostream>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
string a, b;
int prim[40] = {1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113};
int x[30], y[30];
int main () {
while ( cin >> a >> b, a != "0" && b != "0" ) {
memset ( x, 0, sizeof(x) );
memset ( y, 0, sizeof(y) );
int j = 1, k = 1;
for ( int i = 0; i < a.size(); ++ i ) {
if ( a[i] != ',' ) {
x[j] = x[j] * 10 + a[i] - '0';
} else {
++ j;
}
}
for ( int i = 0; i < b.size(); ++ i ) {
if ( b[i] != ',' ) {
y[k] = y[k] * 10 + b[i] - '0';
} else {
++ k;
}
}
reverse ( x+1, x + j + 1 );
reverse ( y+1, y + k + 1 );
int f = 0;
int m = j;
int mm = k;
int t = 0;
if ( m > mm ) {
swap ( m, mm );
t = 1;
}
//cout << m << " " << mm << endl;
int z[30];
for ( int i = 1; i <= m; ++ i ) {
z[i] = x[i] + y[i] + f;
f = z[i] / prim[i];
z[i] %= prim[i];
}
z[m+1] = 0;
for ( int i = m + 1; i <= mm; ++ i ) {
int temp = 0;
if ( !t ) temp = y[i];
else temp = x[i];
z[i] = temp + f;
f = z[i] / prim[i];
z[i] %= prim[i];
}
if ( f ) {
z[++mm] = f;
}
for ( int i = mm; i > 0; -- i ) {
printf ( i == mm ? "%d" : ",%d",z[i] );
}
putchar ( 10 );
}
return 0;
}
相关文章推荐
- HDOJ HDU 2093 考试排名 ACM 2093 IN HDU
- HDOJ 1879 HDU 1879 继续畅通工程 ACM 1879 IN HDU
- HDOJ 1229 HDU 1229 还是A+B ACM 1229 IN HDU
- HDOJ 1251 HDU 1251 统计难题 ACM 1251 IN HDU
- ACM 算法总结 --- 排序 HDOJ HDU 2094 产生冠军 ACM 2094 IN HDU
- HDU 3468 HDOJ 3468 A Simple Problem with Integers ACM 3468 IN HDU
- HDOJ HDU 1164 Eddy's research I ACM 1164 IN HDU
- HDOJ 2147 HDU 2147 kiki's game ACM 2147 IN HDU
- HDOJ 1999 HDU 1999 不可摸数 ACM 1999 IN HDU
- HDOJ 2473 HDU 2473 Junk-Mail Filter ACM 2473 IN HDU
- HDOJ 1166 HDU 1166 敌兵布阵 ACM 1166 IN HDU
- HDU 1098 HDOJ 1098 Ignatius's puzzle ACM 1098 IN HDU
- HDOJ HDU 1709 The Balance ACM 1709 IN HDU
- HDOJ HDU 2088 Box of Bricks ACM 2088 IN HDU
- HDOJ HDU 2897 邂逅明下 ACM 2897 IN HDU
- HDOJ 2199 HDU 2199 Can you solve this equation? ACM 2199 IN HDU
- HDOJ 1010 HDU 1010 Tempter of the Bone ACM 1010 IN HDU
- HDOJ 1892 HDU 1892 See you~ ACM 1892 IN HDU
- HDOJ 1017 HDU 1017 A Mathematical Curiosity ACM 1017 IN HDU
- HDOJ HDU 1106 排序 ACM 1106 IN HDU