1065 A+B and C

2024-01-19 20:48
文章标签 1065

本文主要是介绍1065 A+B and C,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


/*
Sologala @github https://github.com/Sologala/PAT_OJ
PAT_oj No.1065_A+B_and_C_(64bit)
*/

1065 A+B and C (64bit) (20 分)

Given three integers A, B and C in [−263,263], you are supposed to tell whether A+B>C.

Input Specification:

The first line of the input gives the positive number of test cases, T (≤10). Then T test cases follow, each consists of a single line containing three integers A, B and C, separated by single spaces.

Output Specification:

For each test case, output in one line Case #X: true if A+B>C, or Case #X: false otherwise, where X is the case number (starting from 1).

Sample Input:

3
1 2 3
2 3 4
9223372036854775807 -9223372036854775808 0775807 			-775808  	-1  
036854  		-036854		0
223372			-223372		0
9				-9			0		0

Sample Output:

Case #1: false
Case #2: true
Case #3: false

两个大数 计算。 笨办法,字符串模拟计算 。

ac_code

         /*Sologala   @github    https://github.com/Sologala/PAT_OJPAT_oj No.1065 A+B and C (64bit)
*/
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;struct Pos_num{int s[140];Pos_num operator+(const Pos_num&b)const {Pos_num ret;int add=0,i=139;for(;i>=0;i--){ret.s[i] =s[i]+b.s[i]+add;if(ret.s[i]>=10){ret.s[i] %=10;add =1;}else{ add =0;}}for(;i<=0;i++){ret.s[i] =0;}return ret;}Pos_num operator-(const Pos_num&b)const {//假设a>bPos_num ret;int add=0,i=139;for(;i>=0;i--){ret.s[i] =s[i]-b.s[i]-add;if(ret.s[i]<0){ret.s[i]+=10;add =1;}else{ add =0;}}for(;i<=0;i++){ret.s[i] =0;}return ret;}bool operator>(const Pos_num &b)const {for(int i=0;i<140;){if(s[i]!=b.s[i]){return s[i]>b.s[i];}else i++;}return false;}void show(){int i=0;while(i<140&&s[i]==0){i++;}if(i==140)printf("0");else{for(;i<140;i++){printf("%d",s[i]);}}}void set(string str){memset(s,0,sizeof(s));int idx =str.length()-1,i =0;for(;idx>=0;idx--){s[139-i]=str[idx]-'0';i++;}}
};struct Num{bool sig ;Pos_num num;void set(string str){if(str[0]=='-'){sig =false;str.erase(str.begin());}else sig =true;num.set(str);}void show(){if(!sig) printf("-");num.show();}Num operator+(const Num &b)const {Num ret;if(sig==b.sig){//都是正ret.sig =sig;ret.num =num+b.num;}else{//一个正一个负if(num>b.num){ret.num =num-b.num;ret.sig =sig;}else{ret.num =b.num-num;ret.sig =b.sig;}}return ret;}bool operator>(const Num&b)const{if(sig==true&&b.sig==false){return true;}else if(sig==false&&b.sig==true) return false;else{if(sig) return num>b.num;else    return !(num>b.num);}}
};int main(){int cnt;scanf("%d",&cnt);for(int i=0;i<cnt;i++){Num a,b,c,d;string temp;cin>>temp;a.set(temp);cin>>temp;b.set(temp);cin>>temp;c.set(temp);d= a+b;printf("Case #%d: ",i+1);if(d>c) printf("true\n");else printf("false\n");}return 0;
}

这篇关于1065 A+B and C的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

COJ 1065括号匹配:栈的简单应用

[STL]【数据结构】括号匹配 Time Limit: 1000 ms     Memory Limit: 65536 KB Total Submit: 43     Accepted: 11 Description 数据有一行,由(,),[,],{,}六种字符构成。现在判断这行括号是否合法,合法条件如下: 1、每个左括号都有对应的右括号匹配,不得有多余的括号,比如这样正确:{

【胸片分割】基于matlab GUI最小误差法胸片分割系统【含Matlab源码 1065期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划(Matlab) 神经网络预测与分类(Matlab) 优化求解(Matlab) 语音处理(Matlab

【1065】 A+B and C (64bit) 溢出检测

1065. A+B and C (64bit) (20) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming Given three integers A, B and C in [-263, 263], you are supposed to

最大子段和(51Nod 1049)、最小正子段和(51Nod 1065)、总结(最小子段和、最大子段和、最小正子段和)

最大子段和 一.问题描述 给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4]. 二.例题 51Nod 1049 N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a

C++编程 hdu 1065(贪心题目)

Wooden Sticks Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 7   Accepted Submission(s) : 3 Font: Times New Roman | Verdana | Georgia F

【mark一下】atcoder113 +codeforces 1060 D +cf 1065

(1) atcoder 这个C用到了一种唔嗯直接枚举的方法., 就像是以前杭电的某个猜数字的题目。 只有100,再有100,那就直接枚举,n^3也来得及,想不到吧。 …… 有几个坑: 一个是0 0  一个是变小变成0 我的问题大概出在判断上 就是一圈都是0 中间一个是1会出错 昨天打 今天改了半天样例都错了.....(我真是非常容易疲劳   每天精力有限..  哎 qaq) 就没再

zzuli:1065统计数字字符的个数

题目描述 输入一行字符,以回车符作为输入结束的标志。统计其中数字字符的个数。 输入 多个字符,以回车符结束,回车符不作为有效字符。 输出 输出一个整数,表示数字字符的个数。 样例输入 Copy 12abrt12@2013 样例输出 Copy 8 #include <stdio.h>int main(){char ch;int sum=0;while(scanf("%c",

题目 1065: 最小绝对值

题目描述 输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。 输入 十个数 输出 交换后的十个数 样例输入 10 2 30 40 50 60 70 80 90 100 样例输出 10 100 30 40 50 60 70 80 90 2 #include <stdio.h>#include <math.h>void getf(int a[]);

最小正子段和 51Nod - 1065

最小正子段和 题目链接:51Nod - 1065题意:找出一个连续的子序列, 使得子段和为正数, 找出最小的一个子段和;这个题乍一看很熟悉, 有没有想起最大子段和那道题???!!!很兴奋吧, 动归???最大子段和是这样求得O(n)的复杂度;那么这个题一样吗?答案是否定的;遇上这种连续序列的题多想一想前缀和;思路是这样的:求出前缀和,用结构体存, sum表示前缀和, id表示排序前该数的下标

SCAU:1065 数组中的指针

1065 数组中的指针 时间限制:1000MS  代码长度限制:10KB 提交次数:3436 通过次数:1692 题型: 编程题   语言: G++;GCC Description  设有如下数组定义: int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 计算下面各项的值(设数组a的首地址为2000,一个int类型数占四个字节)。 (1)a