UVa 10925 - Krakovia

来源:互联网 发布:搜狗网络推广登录 编辑:程序博客网 时间:2024/06/07 14:44

题目:大数加法+大数除法。

分析:模拟、大整数运算。利用数组模拟大整数加法和大整数除法即可。

#include <iostream>#include <cstdlib>#include <cstring>using namespace std;int  neg,sumv[ 31 ];char data[ 31 ];int  temp[ 31 ];int main(){int N,F,T = 1; while ( cin >> N >> F && (N+F) ) {memset( sumv, 0, sizeof(sumv) );memset( temp, 0, sizeof(temp) );for ( int i = 1 ; i <= N ; ++ i ) {cin >> data;int len = strlen(data);for ( int j = 0 ; j < len ; ++ j )temp[len-1-j] = data[j]-'0';for ( int j = 0 ; j < len ; ++ j )sumv[j] += temp[j];}for ( int i = 0 ; i < 30 ; ++ i ) {sumv[i+1] += sumv[i]/10;sumv[i] %= 10;}cout << "Bill #" << T ++ << " costs ";int sum = 30;while ( sum > 0 && !sumv[sum] ) sum --;while ( sum >= 0 ) cout << sumv[sum --];cout << ": each friend should pay ";for ( int i = 30 ; i >= 0 ; -- i ) {sumv[i-1] += sumv[i]%F*10;sumv[i] /= F;}int div = 30;while ( div >= 1 && !sumv[div] ) div --;while ( div >= 0 ) cout << sumv[div --];cout << endl << endl;}return 0;}
数据:

input:1 111 2013 91433 81431 1314159265358979323845 1199999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999992 2031415926535897932384314159265358979323842 92000000000010003 110000000000000000000020000000000000000000040000000000000000000011 21000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000001000000000000000000005 20100000000000000000000999999999999999999999999999999999999999899999999999999999997999999999999999999964 173515135187212503540533457899213210510221 71101001000100001000001000000100000001000000001000000000100000000001000000000001000000000000100000000000001000000000000001000000000000000100000000000000001000000000000000001000000000000000000100000000000000000001000000000000000000000 0
output:Bill #1 costs 1: each friend should pay 1Bill #2 costs 1: each friend should pay 0Bill #3 costs 8: each friend should pay 0Bill #4 costs 8: each friend should pay 1Bill #5 costs 31415926535897932384: each friend should pay 31415926535897932384Bill #6 costs 499999999999999999995: each friend should pay 45454545454545454545Bill #7 costs 62831853071795864768: each friend should pay 3141592653589793238Bill #8 costs 20000001000: each friend should pay 2222222333Bill #9 costs 700000000000000000000: each friend should pay 700000000000000000000Bill #10 costs 1100000000000000000000: each friend should pay 550000000000000000000Bill #11 costs 499999999999999999990: each friend should pay 24999999999999999999Bill #12 costs 507055670777318: each friend should pay 29826804163371Bill #13 costs 111111111111111111111: each friend should pay 15873015873015873015

原创粉丝点击