1 条题解
-
0
C :
#include "stdio.h" #include "string.h" #define _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_WARNINGS int sum_have, new_have; int sum[20]; int new[20]; void change(char str[]) { int length = strlen(str); int i,j,k; j = 0; for (i = 1; i <= 20; i++) { new[i] = 0; } for (i = length; i >=0; i--) { if ((str[i] >= '0') && (str[i] <= '9')) { j++; new[j] = (int)str[i] - 48; new_have = j; } } } void work(int n) { int i,j,max; char str[100]; for (i = 1; i <= 20; i++) { sum[i] = 0; } sum_have = 0; for (i = 1; i <= n; i++) { gets(str); change(str); max = sum_have; if (new_have > sum_have) max = new_have; for (j = 1; j <= max; j++) { sum[j] = sum[j] + new[j]; if (sum[j] > 9) { sum[j + 1] ++; sum[j] = sum[j] - 10; if (j +1> max) max = j+1; } } sum_have = max; } printf("$"); if (sum_have < 3) printf("0.%d%d\n", sum[2], sum[1]); else { i = sum_have; j = 3-(sum_have-((sum_have-2)/3*3)-2); while (i>3) { printf("%d", sum[i]); j++; if (j == 3) { printf(","); j = 0; } i--; } printf("%d.%d%d\n", sum[3], sum[2], sum[1]); } } void main() { int n; while (1) { scanf("%d", &n); if (n == 0) break; getchar(); work(n); } }
C++ :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <algorithm> #include <map> #include <queue> #include <stack> #include <iostream> using namespace std; char a[100], b[100], c[100]; void addtion(char *b) { int i, j, la = strlen(a), lb = strlen(b), dig = 0, d; for(i = la, j = lb; i >= 1 && j >= 1; i --, j --) { if(a[i] >= '0' && a[i] <= '9' && b[j] >= '0' && b[j] <= '9') { d = (a[i] - '0' + b[j] - '0' + dig) / 10; a[i] = (a[i] - '0' + b[j] - '0' + dig) % 10 + '0'; dig = d; } } for(;i >= 1 ; i --) { if(a[i] >= '0' && a[i] <= '9') { d = (a[i] - '0' + dig) / 10; a[i] = (a[i] - '0' + dig) % 10 + '0'; dig = d; } } int k = j; for(; j >= 1 ; j --) { if(b[j] >= '0' && b[j] <= '9') { d = (b[j] - '0' + dig) / 10; b[j] = (b[j] - '0' + dig) % 10 + '0'; dig = d; } } if(k > 0) { la += k; for(i = la + k; i > k ; i -- ) { a[i] = a[i-k]; } for(j = i ; j >= 0 ; j --) { a[j] = b[k--]; } } if(dig > 0) { if((la - 4) % 4 == 3) { for(i = la + 2 ; i > 2; i --) { a[i] = a[i-2]; } a[2] = ','; a[1] = dig + '0'; } else { for(i = la + 1 ; i > 1; i --) { a[i] = a[i-1]; } a[1] = dig + '0'; } } } int main () { int n, m, i, j, k, len; while(scanf("%d",&n) && n) { strcpy(a,"$0.00"); for(i = 0 ; i < n ; i ++) { scanf("%s",b); addtion(b); } printf("%s\n",a); } return 0; }
- 1
信息
- ID
- 1357
- 时间
- 2000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者