zoukankan      html  css  js  c++  java
  • 洛谷 P1581 A+B Problem(升级版)

    题目背景

    小明这在写作业,其中有一道A+B Problem ,他想啊想啊想,就是想不出来,于是就找到了会编程的你......

    题目描述

    这里的A+B是很奇特的。它是按质数的顺序来进位的。例如:1,0+2,1=1,0,1(用,来分隔每一位)。个位是2进制,十位是3进制,百位是5进制,千位是7进制,万位是11进制……两个加数的最高位是万位(万位可能有两位)。

    输入输出格式

    输入格式:

     

    输入一个形如1,0+2,1字符串s。

     

    输出格式:

     

    输出相加后的结果。

     

    输入输出样例

    输入样例#1: 复制
    1,0+2,1
    输出样例#1: 复制
    1,0,1
    思路:模拟。
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int num[6]={0,2,3,5,7,11};
    int a[7],b[7],c[7];
    char ch;
    void f(int a[]){
          memcpy(c,a,sizeof c);
          for(int i=1;i<=a[0];i++)
            a[i]=c[a[0]-i+1];
    }
    int main(){
        scanf("%d%c",&a[++a[0]],&ch);
          while(ch!='+') scanf("%d%c",&a[++a[0]],&ch);
          while(cin>>b[++b[0]]>>ch);
          f(a);f(b);
          for(int i=1;i<=5;i++)
              c[i]=a[i]+b[i];
          for(int i=1;i<=5;i++){
            c[i+1]+=c[i]/num[i];
            c[i]%=num[i];
          }
        c[0]=max(a[0],b[0])+(c[max(a[0],b[0])+1]>0);
        cout<<c[c[0]];
        for(int i=c[0]-1;i;i--) cout<<','<<c[i];
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    经典语录一
    例子二
    例子一
    模板加载
    vim 程序编辑器
    文件与文件系统的压缩,打包与备份
    Linux 磁盘与文件系统管理
    文件与目录操作
    Linux 的文件/目录权限
    Linux 指令代码,热键以及文件放置安排
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7965492.html
Copyright © 2011-2022 走看看