SDNU 1280.就问你慌不慌(高精度)
生活随笔
收集整理的這篇文章主要介紹了
SDNU 1280.就问你慌不慌(高精度)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
求N進制的高精度加法Input
第一行輸入N(2≤N≤10)
第二行兩個數X Y(長度均≤100)
Output
輸出N進制下X和Y的和Sample Input
5 2 4Sample Output
11 #include <cstdio> #include <iostream> #include <cmath> #include <string> #include <cstring> #include <algorithm> #include <queue> #include <vector> #include <map> using namespace std;#define ll long long #define eps 1e-9const int inf = 0x3f3f3f3f; const int mod = 1e9+7;char ads[10000005]; char s1[10005], s2[10005]; int n;void additive(char* a, char* b) {memset(ads, 0, sizeof(ads));int len1, len2;len1 = strlen(a);len2 = strlen(b);if(len1 < len2)///保持len1是最長的 {for(int i = 0; i<len2; i++)swap(a[i], b[i]);swap(len1, len2);}reverse(a, a + len1);reverse(b, b + len2);int t = 0, i;for(i = 0; i < len2; i++)///一遍求和一邊求進制 {ads[i] = ((a[i] - '0') + (b[i] - '0') + t) % n + '0';t = (a[i] + b[i] - '0' - '0' + t) / n;}for(int k = i; k < len1; k++)///處理較大的那個數沒有加的那部分 {ads[k] = (a[k] + t - '0') % n + '0';t = (a[k] + t - '0') / n;}if(t != 0)printf("%d", t);for(int m = len1 - 1; m >= 0; m--)printf("%c", ads[m]);printf("\n"); }int main() {scanf("%d", &n);cin>>s1>>s2;additive(s1, s2);return 0; }?
轉載于:https://www.cnblogs.com/RootVount/p/11340424.html
總結
以上是生活随笔為你收集整理的SDNU 1280.就问你慌不慌(高精度)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL函数大全 及用法示例
- 下一篇: SDNU 1300.转圈游戏(快速幂)