首页 > 代码库 > 九度OJ 1016 火星A+B AC版
九度OJ 1016 火星A+B AC版
#include <iostream>#include <string.h>#include <sstream>#include <math.h>#include <vector>#include <algorithm>using namespace std;int susuTable[28]={1};bool isLear(int num){ if(num==2) return true; else { int i = 2; for(;i<=sqrt(num);i++) { if(num%i == 0) return false; } return true; }}void setArr(int arr[]){ int i = 2; int totalBit = 1; while(totalBit!=28) { if(isLear(i) ==true) { arr[totalBit] = i; totalBit++; } i++; }}void display(int arr[]){ int i = 0; for(;i<28;i++) { cout<<arr[i]<<" "; }}void transString(string spark,vector<int> &vec){ int len = spark.length(); int i = 0; while(i!=len) { int temp = 0; while(spark[i]!=‘,‘ && i!=len) { temp = temp*10 + (spark[i]-‘0‘); i++; } vec.insert(vec.begin(),temp); if(i==len) break; else i++; }}void disVec(vector<int> vec){ int i=vec.size()-1; for(;i>=0;i--) { cout<<vec[i]; if(i!=0) cout<<‘,‘; } cout<<endl;}void add(vector<int> &vecA,vector<int> &vecB){ int upFlow = 0; int index = 1; int sizeA = vecA.size(); int sizeB = vecB.size(); if(sizeB > sizeA) vecA.swap(vecB); int i = 0; for(;i<vecB.size();i++) { vecA[i] = vecA[i] + vecB[i] + upFlow; if(vecA[i] >= susuTable[i+1]) { vecA[i] %= susuTable[i+1]; upFlow = 1; } else upFlow = 0; } for(;i<vecA.size();i++) { vecA[i] = vecA[i] + upFlow; if(vecA[i] >= susuTable[i+1]) { vecA[i] %= susuTable[i+1]; upFlow = 1; } else upFlow = 0; } if(upFlow==1) vecA.push_back(1);}int main(){ string num_a,num_b; vector<int> vecA; vector<int> vecB; setArr(susuTable); //display(susuTable); cin>>num_a>>num_b; while(!(num_a =="0" || num_b=="0")) { transString(num_a,vecA); //disVec(vecA); transString(num_b,vecB); add(vecA,vecB); disVec(vecA); vecA.clear(); vecB.clear(); cin>>num_a>>num_b; } return 1;}
题目描述见上一篇。
解题思路:将火星数字a,b中的各个部分的数值取出来,放入各自的vec中,采用头插法,然后遍历2个数组,将对应的元素相加,如有进位,保存在upFlow中,加到下一组元素,知道某一个vec到尽头,继续讲进位加下去,直到另一个vec到尽头,最后将最后的进位插入到存储和的vec的末尾,这个vec就是火星数字a+b,输出即可
九度OJ 1016 火星A+B AC版
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。