3989. I guess the gift is a calculator! toj

2024-01-17 21:38
文章标签 gift calculator toj guess 3989

本文主要是介绍3989. I guess the gift is a calculator! toj,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 


 

写的好搓 先放着

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
string jianfa(string a,string b,char f)
{if(a.compare(b)==0){	string c="0";return c;}string c="",ans="",t;int  flag=0,k=0;//flag退位的标志int flag2;//结果正负的标志if(f=='+')flag2=0;elseflag2=1;if(a.length()<b.length()||(a.length()==b.length()&& a.compare(b)<0)){t=a;a=b;b=t;flag2^=1;}int i=a.length()-1,j=b.length()-1;while(i>=0&&j>=0){if(a[i]+flag>b[j]){c+=a[i]+flag-b[j]+'0';flag=0;}else if (a[i]+flag==b[j]){c+='0';flag=0;}else{c+=(a[i]-'0')+flag+10-(b[j]-'0')+'0';flag=-1;}i--;j--;k++;}int len=k-1;while(c[len]=='0'&&len>0)len--;//检索高位for(j=0;j<=len;j++)ans+=c[j];if(flag2){ ans+='-';}//结果正负判断char tt;for(i=0,j=ans.length()-1;i<j;i++,j--)//倒置{tt=ans[i];ans[i]=ans[j];ans[j]=tt;}return ans;
}int main()
{string a,b;while(cin>>a>>b&&(a[0]!='0'||b[0]!='0')){string s1(a.begin()+1,a.end());string s2(b.begin()+1,b.end());if(a[0]==b[0]){cout<<jianfa(s1,s2,a[0])<<endl;}else{int num1[150],num2[150];int ans[150];memset(ans,0,sizeof(ans));memset(num1,0,sizeof(num1));memset(num2,0,sizeof(num2));int l1=s1.size(),l2=s2.size();int i,j;for(i=l1-1,j=0;i>=0;i--,j++)num1[j]=s1[i]-'0';for(i=l2-1,j=0;i>=0;i--,j++)num2[j]=s2[i]-'0';int max=l1>l2?l1:l2;for(i=0;i<max;i++){ans[i]+=num1[i]+num2[i];if(ans[i]>9){ans[i+1]+=ans[i]/10;ans[i]=ans[i]%10;}}if(b[0]=='+')cout<<"-";int flag=1;for(i=max+1;i>=0;i--)if(flag&&ans[i]==0)continue;else{flag=0;cout<<ans[i];}cout<<endl;}	}return 0;
}


 

这篇关于3989. I guess the gift is a calculator! toj的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617300

相关文章

【TOJ】2248 Channel Design 最小树形图——朱刘算法

传送门:【TOJ】2248 Channel Design 题目大意:大概意思是需要从水库(编号始终为1)引水到所有的农场(编号2~n),通过m条水管引水直接或间接的得到水(即有边(1,2),(2,3),则说明3能间接的得到水),其中水管是单向的,且每条水管的铺设都需要一定的费用,问要从水库引水到所有的农场的最少花费。如果无解输出impossible。 题目分析:最小树形图模板题。

UVALive 4255 Guess

题意: 给你半个矩阵  如果(i,j)的位置是'-'  则说明sum[i...j]<0  如果是'+'  说明sum>0  如果是'0'  说明sum=0  给出一种满足这个矩阵的序列  序列元素绝对值在10以内 思路: 很容易想到的是将sum[i...j]转化为sum[j]-sum[i-1]  即用前缀和来表示  那么题中的矩阵就可以转化成前缀和之间的大小比较  也就是说  我们可以通过

Basic Calculator 总结

Basic Calculator 思路:stack中间存数,遇见+,-都当符号位,push num或者-num进去;最后相加;重要的是如何处理括号,那么这里一种方法是用递归调用;count左右括号,如果为0,那么就是一个反括号的位置了,那么 //(      ) //j......i; substring(j + 1, i); 这题的通用解法,可以扩展到二三题; class Solutio

ZOJ 3904 Birthday Gift【NTT】

首先,我们知道的是, num1+num2=N num_1+num_2=N,其中 num1 num_1是Alice的盒子数, num2 num_2是Bob的盒子数。 那么 ans[N]=∑Alice(num1)×Bob(N−num1) ans[N]=\sum Alice(num_1)\times Bob(N-num1),明显是FFT的卷积形式。 接下来分析 Alice(num1) Alice(n

UVA11995I Can Guess the Data Structure!(stack + queue + priority_queue)

题目:UVA11995I Can Guess the Data Structure!(stack + queue + priority_queue) 题目大意:给你两种指令,1代表让1后面的数字进入这个数据结构,2代表无差错的从数据结构中取出这个数字,问这个数据结构是stack还是queue还是priority_queue,还是不确定,还是以上均不可能。 解题思路:用STL中的这些

Basic Calculator

题意: 写一个简单的计算器,此计算器只有加法,减法及括号操作 分析: 开两个栈,一个村操作数,一个村操作符,其中+与-同级,当一个操作符要进栈时,判断操作符栈顶元素,若是同级,则让操作数栈出栈两个数,操作符栈出栈栈顶元素,然后将计算出的结果存入操作数栈,待进栈操作符进栈;当遇到左括号时,果断进栈,遇到右括号,则先计算括号中的结果,然后对应的左括号出栈; 最终使得操作符栈为空,计算出的结果即

Mediapipe 在RK3399PRO上的初探(二)(自定义Calculator)

PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 环境说明 Ubuntu 18.04gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)RK3399PRO 板卡 前言   本文有一篇前置文章为《Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU

TOJ 4365 ZOJ 3623 Battle Ships / 完全背包

Battle Ships 时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte 描述 Battle Ships is a new game which is similar toStar Craft. In this game, the enemy builds a defense tower, which has L longe

TOJ 3761 Egg Problem

Egg Problem 时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte 描述 There is a very interesting problem described as follows: You are given two eggs. You have access to a 100-storey building.

TOJ 4354 HDU 4262 Juggler / 树状数组

Juggler 时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte   描述 As part of my magical juggling act, I am currently juggling a number of objects in a circular path with one hand. However, as