[小米OJ] 3. 大数相减
思路:
利用两个string保存相减的数,其他模拟即可。
参考了别人的一个处理减的步骤,很简洁好看。
string substract(string str1, string str2)
{
string str = "";
int len = str1.length();
int a = , b = , c = ;
for (int i = len - ; i >= ; i--)
{
a = str1[i] - '';
b = str2[i] - '';
str += ((a - b - c + ) % ) + '';
if (a - b - c >= )
c = ;
else
c = ;
}
reverse(str.begin(), str.end());
return str;
}
完整代码:
#include <bits/stdc++.h>
using namespace std; void init1(string input, string &str1, string &str2)
{
int index = input.find('-');
for (int i = ; i < input.length(); i++)
{
if (i < index)
str1 += input[i];
else if (i > index)
str2 += input[i];
}
} void init2(string str1, string &str2)
{
while (str2.length() < str1.length())
{
str2 = '' + str2;
}
} string substract(string str1, string str2)
{
string str = "";
int len = str1.length();
int a = , b = , c = ;
for (int i = len - ; i >= ; i--)
{
a = str1[i] - '';
b = str2[i] - '';
str += ((a - b - c + ) % ) + '';
if (a - b - c >= )
c = ;
else
c = ;
}
reverse(str.begin(), str.end());
return str;
} void print(string str)
{
while (str[] == '')
{
str.erase(str.begin());
}
if (str.length() == )
str = "";
cout << str << endl;
} int main()
{
string input, str, str1, str2;
while (cin >> input)
{
init1(input, str1, str2);
init2(str1, str2);
str = substract(str1, str2);
print(str);
}
return ;
}
[小米OJ] 3. 大数相减的更多相关文章
- Java 大数相乘、大数相加、大数相减
思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...
- HDU 3925 Substring 【大数相减】
题目意思是,给你提供两个数字 a 和 b a 可以不断的往上加, 直到b 为其子串 问的是 a 最小加几? 显而易见,a 的数据范围给了10 ^100非常大,直接模拟肯定不行 那么就用 b 减去 a ...
- 大数相减 C语言
#include <stdio.h> #include <string.h> using namespace std; ],b[]; void Sub() { ; if(a = ...
- C语言复习---获取最大公约数(辗转相除法和更相减损法)
源自:百度百科 辗转相除法 辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法. 例如,求(,): ∵ ÷=(余319) ∴(,)=(,): ∵ ÷=(余58) ∴(,)=( ...
- 上机题目(中级)- 两个超级大的整数相加相减 (Java)
代码例如以下: public class AddSub { public static void main(String[] args) { String a="46328648326846 ...
- C语言,最大公约数---更相减损术
// 最大公约数 更相减损法 int commonDivisor() { int i,k,n=0; printf("请输入两个不同的正整数,用,隔开\n"); scanf(&quo ...
- C#-和时间有关的计算代码、时间相减 得到天数、小时、分钟、秒差
asp.net(C#)时间相减 得到天数.小时.分钟.秒差 asp.net(C#)时间相减 得到天数.小时.分钟.秒差 DateTime dtone = Convert.ToDateTime( ...
- asp.net(C#)时间相减 得到天数、小时、分钟、秒差
asp.net(C#)时间相减 得到天数.小时.分钟.秒差 DateTime dtone = Convert.ToDateTime("2007-1-1 05:00:00"); Da ...
- Alice and Bob 要用到辗转相减
Alice and BobTime Limit: 1 Sec Memory Limit: 64 MBSubmit: 255 Solved: 43 Description Alice is a be ...
随机推荐
- Qt:正确判断文件、文件夹是否存在的方法
一直对Qt的isFile.isDir.exists这几个方法感到混乱,不知道到底用哪个,网上搜了下资料,也是用这几个方法但是都没有对其深究,经过测试发现会存在问题,先看看下面的测试代码 { QFile ...
- IT安全军火库-转
全球有260万信息安全专业人士,渗透测试工具是他们“安全军火库”中最常使用的装备,但直到最近,可用的渗透测试工具才丰富起来,但这也带来一个问题,挑选合适的渗透测试工具成了一件麻烦事,一个最简单的方法就 ...
- 对SpringMVC架构进行工程拆分遇到的问题总结
经过一个月的开发,一个单一的SpringMVC教育类创业项目正式上线,随着时间的推移,业务流量逐渐增大,最近对这个单一的工程从零进行SOA分布式改造,改造包括dubbo改造,集成化部署.高可用集群,负 ...
- SpringBoot系列——加载自定义配置文件
前言 SpringBoot启动时默认加载bootstrap.properties或bootstrap.yml(这两个优先级最高).application.properties或application. ...
- spark 源码分析之二 -- SparkContext 的初始化过程
创建或使用现有Session 从Spark 2.0 开始,引入了 SparkSession的概念,创建或使用已有的session 代码如下: val spark = SparkSession .bui ...
- idea+mvc项目转换小记
经过大家协商,决定还是紧跟时代潮流,把项目转到idea下,并且重新组织项目结构.项目环境原本为myeclipse+maven+springMVC,由于本人提议的boot+cloud变化太大,成本巨大, ...
- Node中的cookie的使用
1.为什么使用cookie? 因为HTTP是无状态协议.简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到,这是同一个浏览器在访问同一个网站.每一次的访问,都是没有任何关系 ...
- kubernetes实战篇之helm使用技巧
系列目录 使用压缩包安装chart 我们使用helm package打包的时候,默认会在当前位置生成一个tgz压缩包,然后helm把它复制到到$HOME/.helm/repository目录下,现在还 ...
- json数据转为对象,一般在前台把数据传回后端中使用 转https://www.cnblogs.com/zxtceq/p/6610214.html
public static JArray GetData2JArray(string url, string key) { string jsonData = HttpHelper.HttpGet(u ...
- 数据结构与算法---树结构(Tree structure)
为什么需要树这种数据结构 数组存储方式的分析 优点:通过下标方式访问元素,速度快.对于有序数组,还可使用二分查找提高检索速度. 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 ...