九度1026(unsigned int应用)
来源:互联网 发布:电路图仿真软件下载 编辑:程序博客网 时间:2024/06/05 00:16
题目链接:http://ac.jobdu.com/problem.php?pid=1026
解题思路:
刚开始用高精度+任意进制转换写残了······后来直接暴力。unsigned int 能够存储2倍的 int 数据。
完整代码:
#include <functional>#include <algorithm>#include <iostream>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cstring>#include <climits>#include <cassert>#include <complex>#include <cstdio>#include <string>#include <vector>#include <bitset>#include <queue>#include <stack>#include <cmath>#include <ctime>#include <list>#include <set>#include <map>using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")typedef long long LL;typedef double DB;typedef unsigned uint;typedef unsigned long long uLL;/** Constant List .. **/const int MOD = int(1e9)+7;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f3f3f3f3f3f3fLL;const DB EPS = 1e-9;const DB OO = 1e20;const DB PI = acos(-1.0); //M_PI;/**BigNumber..**/const int ten[4] = {1 , 10 , 100 , 1000};const int maxl = 1000;struct BigNumber{ int d[maxl]; BigNumber(string s){ int len = s.size(); d[0] = (len - 1) / 4 + 1; int i , j , k; for(i = 1 ; i < maxl ; i ++) d[i] = 0; for(i = len - 1 ; i >= 0 ; i --){ j = (len - i - 1) / 4 + 1; k = (len - i - 1) % 4; d[j] += ten[k] * (s[i] - '0'); } while(d[0] > 1 && d[d[0]] == 0) --d[0]; } BigNumber(){ *this = BigNumber(string("0")); } string toString(){ string s(""); int i , j , temp; for(i = 3 ; i >= 1 ; i --){ if(d[d[0]] >= ten[i]) break; } temp = d[d[0]]; for(j = i ; j >= 0 ; j --){ s = s + (char)(temp / ten[j] + '0'); temp %= ten[j]; } for(i = d[0] - 1 ; i > 0 ; i --){ temp = d[i]; for(j = 3 ; j >= 0 ; j --){ s = s + (char)(temp / ten[j] + '0'); temp %= ten[j]; } } return s; }}zero("0") , d , temp , midl[15];BigNumber operator + (const BigNumber &a , const BigNumber &b){ BigNumber c; c.d[0] = max(a.d[0] , b.d[0]); int i , x = 0; for(i = 1 ; i <= c.d[0] ; i ++){ x = a.d[i] + b.d[i] + x; c.d[i] = x % 10000; x /= 10000; } while(x != 0){ c.d[++c.d[0]] = x % 10000; x /= 10000; } return c;}BigNumber operator - (const BigNumber &a , const BigNumber &b){ BigNumber c; c.d[0] = a.d[0]; int i , x = 0; for(i = 1 ; i <= c.d[0] ; i ++){ x = 10000 + a.d[i] - b.d[i] + x; c.d[i] = x % 10000; x = x / 10000 - 1; } while((c.d[0] > 1) && (c.d[c.d[0]] == 0)) -- c.d[0]; return c;}unsigned int a , b;int m;int main(){ #ifdef DoubleQ freopen("in.txt","r",stdin); #endif std::ios::sync_with_stdio(false); std::cin.tie(0); while(cin >> m) { if(m == 0) break; cin >> a >> b; if(a == 0 && b == 0) { cout << "0" << endl; continue; } unsigned int c = a + b; string res = ""; while(c) { int k = c % m; c /= m; res += (char)(k + '0'); } reverse(res.begin() , res.end()); cout << res << endl; }}
0 0
- 九度1026(unsigned int应用)
- (*(volatile unsigned int *))
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- unsigned long unsigned int unsigned
- unsigned char, unsigned int
- unsigned int
- 最简单的问题与算法(数制转换)
- Qt制作画板
- HDU 4007 Dave 枚举
- 一台服务器安装多个jdk和tomcat
- js 提交表单的方式 (Using JavaScript Submit Form)
- 九度1026(unsigned int应用)
- policy机制中经典的python用法
- NSTimer容易陷进去的坑
- ubuntu 64位 使用androidstudio出现的问题----Adb not responding
- [svn]centos 6.5下安装和配置svn
- UIButton 使用方法心得总结
- [Leetcode] Binary Tree Preorder Traversal
- Linux 查看、编辑、比较二进制文件 .
- VC环境下配置编译STLport-5.2.1