鱼C论坛

 找回密码
 立即注册
查看: 3152|回复: 13

[吹水] 真正的A+B

[复制链接]
发表于 2023-7-28 22:16:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. char a[250],b[250];
  4. int ia[250],ib[250],ic[250];
  5. int main(){
  6.         int jinwei = 0;
  7.         int temp = 0,len;
  8.         scanf("%s",a);
  9.         scanf("%s",b);
  10.         for (int i = strlen(a)-1;i>=0;i--){
  11.                 ia[temp] = a[i] - '0';
  12.                 temp ++;
  13.         }
  14.         temp = 0;
  15.         for (int i = strlen(b)-1;i>=0;i--){
  16.                 ib[temp] = b[i] - '0';
  17.                 temp++;
  18.         }
  19.         if (strlen(a) > strlen(b)) {
  20.                 len = strlen(a);
  21.         }
  22.         else{
  23.                 len = strlen(b);
  24.         }
  25.         for (int i = 0;i<=len;i++){
  26.                 if (jinwei == 1){
  27.                         ic[i] = ia[i] + ib[i] + 1;
  28.                         jinwei = 0;
  29.                 }
  30.                 else{
  31.                         ic[i] = ia[i] +ib[i];
  32.                 }
  33.                 if (ic[i] >=10){
  34.                         jinwei = 1;
  35.                         ic[i] -= 10;
  36.                 }
  37.         }
  38.         for (int i = len;i>=0;i--){
  39.                 if (ic[i] ==0&&i == len){       
  40.                 }
  41.                 else{
  42.                         cout<<ic[i];
  43.                 }               
  44.         }       
  45. }
复制代码

这才叫a+b
(高精度运算)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-28 22:30:06 | 显示全部楼层
不是要用线段树来做么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 22:33:13 | 显示全部楼层
  1. #include <iostream>
  2. #include <boost/multiprecision/cpp_int.hpp>

  3. using cpp_int = boost::multiprecision::cpp_int;
  4. using std::cin, std::cout, std::endl;

  5. int main() {
  6.     cpp_int a, b; cin >> a >> b;
  7.     cout << a + b << endl;
  8.     return 0;
  9. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 22:37:08 | 显示全部楼层
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define N 100000
  4. using namespace std;
  5. int sz[N], rev[N], tag[N], sum[N], ch[N][2], fa[N], val[N];
  6. int n, m, rt, x;
  7. void push_up(int x){
  8.     sz[x] = sz[ch[x][0]] + sz[ch[x][1]] + 1;
  9.     sum[x] = sum[ch[x][1]] + sum[ch[x][0]] + val[x];
  10. }
  11. void push_down(int x){
  12.     if(rev[x]){
  13.         swap(ch[x][0], ch[x][1]);
  14.         if(ch[x][1]) rev[ch[x][1]] ^= 1;
  15.         if(ch[x][0]) rev[ch[x][0]] ^= 1;
  16.         rev[x] = 0;
  17.     }
  18.     if(tag[x]){
  19.         if(ch[x][1]) tag[ch[x][1]] += tag[x], sum[ch[x][1]] += tag[x];
  20.         if(ch[x][0]) tag[ch[x][0]] += tag[x], sum[ch[x][0]] += tag[x];
  21.         tag[x] = 0;
  22.     }
  23. }
  24. void rotate(int x, int &k){
  25.     int y = fa[x], z = fa[fa[x]];
  26.     int kind = ch[y][1] == x;
  27.     if(y == k) k = x;
  28.     else ch[z][ch[z][1]==y] = x;
  29.     fa[x] = z; fa[y] = x; fa[ch[x][!kind]] = y;
  30.     ch[y][kind] = ch[x][!kind]; ch[x][!kind] = y;
  31.     push_up(y); push_up(x);
  32. }
  33. void splay(int x, int &k){
  34.     while(x != k){
  35.         int y = fa[x], z = fa[fa[x]];
  36.         if(y != k) if(ch[y][1] == x ^ ch[z][1] == y) rotate(x, k);
  37.         else rotate(y, k);
  38.         rotate(x, k);
  39.     }
  40. }
  41. int kth(int x, int k){
  42.     push_down(x);
  43.     int r = sz[ch[x][0]]+1;
  44.     if(k == r) return x;
  45.     if(k < r) return kth(ch[x][0], k);
  46.     else return kth(ch[x][1], k-r);
  47. }
  48. void split(int l, int r){
  49.     int x = kth(rt, l), y = kth(rt, r+2);
  50.     splay(x, rt); splay(y, ch[rt][1]);
  51. }
  52. void rever(int l, int r){
  53.     split(l, r);
  54.     rev[ch[ch[rt][1]][0]] ^= 1;
  55. }
  56. void add(int l, int r, int v){
  57.     split(l, r);
  58.     tag[ch[ch[rt][1]][0]] += v;
  59.     val[ch[ch[rt][1]][0]] += v;
  60.     push_up(ch[ch[rt][1]][0]);
  61. }
  62. int build(int l, int r, int f){
  63.     if(l > r) return 0;
  64.     if(l == r){
  65.         fa[l] = f;
  66.         sz[l] = 1;
  67.         return l;
  68.     }
  69.     int mid = l + r >> 1;
  70.     ch[mid][0] = build(l, mid-1, mid);
  71.     ch[mid][1] = build(mid+1, r, mid);
  72.     fa[mid] = f;
  73.     push_up(mid);
  74.     return mid;
  75. }
  76. int asksum(int l, int r){
  77.     split(l, r);
  78.     return sum[ch[ch[rt][1]][0]];
  79. }
  80. int main(){
  81.     //总共两个数
  82.     n = 2;
  83.     rt = build(1, n+2, 0);//建树
  84.     for(int i = 1; i <= n; i++){
  85.         scanf("%d", &x);
  86.         add(i, i, x);//区间加
  87.     }
  88.     rever(1, n);//区间翻转
  89.     printf("%d\n", asksum(1, n));//区间求和
  90.     return 0;
  91. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 22:40:11 | 显示全部楼层
《挑战A+B最长代码》
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-28 22:54:06 | 显示全部楼层
sfqxx 发表于 2023-7-28 22:40
《挑战A+B最长代码》

但是介个可以计算很大的数
超过了long long
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-28 22:54:40 | 显示全部楼层
sfqxx 发表于 2023-7-28 22:40
《挑战A+B最长代码》

泰裤辣
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-28 22:55:14 | 显示全部楼层
zhangjinxuan 发表于 2023-7-28 22:30
不是要用线段树来做么

用字符串也行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 23:01:09 | 显示全部楼层
香蕉那个不拿拿 发表于 2023-7-28 22:54
但是介个可以计算很大的数
超过了long long

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 10:03:47 | 显示全部楼层
我也来秀一下

  1. #include <bits/stdc++.h>
  2. using namespace std;

  3. struct bint{
  4.     int len;
  5.     int t[5000];

  6.     bint(){
  7.         memset(t, 0, sizeof(t));
  8.         len = 0;
  9.     }

  10.     bint(const string &s){
  11.         memset(t, 0, sizeof(t));
  12.         len = s.length();
  13.         for (int i = 0; i < len; i++){
  14.             t[i] = s[len - 1 - i] - '0';
  15.         }
  16.     }

  17.     void print(){
  18.         for (int i = 0; i < len; i++){
  19.             cout << t[len - 1 - i];
  20.         }
  21.         cout << endl;
  22.     }

  23.     bint operator=(const bint &b){
  24.         len = b.len;
  25.         memcpy(t, b.t, len * sizeof(int));
  26.         return *this;
  27.     }

  28.     bint operator+(const bint &b) const{
  29.         bint c;
  30.         c.len = max(len, b.len);
  31.         int carry = 0;
  32.         for (int i = 0; i < c.len; i++){
  33.             int x = t[i] + b.t[i] + carry;
  34.             c.t[i] = x % 10;
  35.             carry = x / 10;
  36.         }
  37.         if (carry){
  38.             c.t[c.len++] = carry;
  39.         }
  40.         return c;
  41.     }

  42.     bint operator*(const bint &b) const{
  43.         bint c;
  44.         for (int i = 0; i < len; i++){
  45.             int carry = 0;
  46.             for (int j = 0; j < b.len; j++){
  47.                 int x = t[i] * b.t[j] + c.t[i + j] + carry;
  48.                 c.t[i + j] = x % 10;
  49.                 carry = x / 10;
  50.             }
  51.             if (carry){
  52.                 c.t[i + b.len] += carry;
  53.             }
  54.         }
  55.         c.len = len + b.len;
  56.         while (c.len > 1 && c.t[c.len - 1] == 0){
  57.             c.len--;
  58.         }
  59.         return c;
  60.     }
  61. };

  62. int main(){
  63.     string a, b;
  64.     cin >> a >> b;
  65.     bint c(a), d(b);
  66.     bint ans_jia = c + d;
  67.     ans_jia.print();

  68.     return 0;
  69. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 10:34:44 | 显示全部楼层
  1. print(sum(map(int, input().split())))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 11:36:09 | 显示全部楼层

一点也不节省,逗号后面的空格,赶紧吃了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 11:42:10 | 显示全部楼层
zhangjinxuan 发表于 2023-7-29 11:36
一点也不节省,逗号后面的空格,赶紧吃了

  1. print(sum(map(int,input().split())))
  2. #___________
  3. #|      o  /
  4. #|        /
  5. #|       /
  6. #|      /    " "
  7. #|      \
  8. #|       \
  9. #|        \
  10. #|_________\
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-29 11:42:41 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-2 01:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表