当前位置: 代码迷 >> 综合 >> 1065?A+B and C (64bit)?(20?分)
  详细解决方案

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

热度:52   发布时间:2024-01-24 08:31:15.0

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

Given three integers A, B and C in [?2?63??,2?63??], 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 0

Sample Output:

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

long long 正溢出true(比最大大 肯定大于c)  负溢出false(比最小小,肯定false)  未溢出正常判断 

#include<bits/stdc++.h>
using namespace std;
//long long 正溢出true(比最大大 肯定大于c)  负溢出false(比最小小,肯定false)  未溢出正常判断  
//不过大数还是掌握住比较好 防患于未然 今天就复习个大数加减法 
int main(){long long a,b,c,res;string s;int T;cin>>T;for(int i=1;i<=T;i++){cin>>a>>b>>c;res=a+b;if(a>0&&b>0&&res<=0) s="true";//注意等号 else if(a<0&&b<0&&res>=0) s="false";//注意等号 else if(res>c) s="true";else s="false";cout<<"Case #"<<i<<": "<<s<<endl;}return 0;
} 

 

考点有python3.6.5 pycharm  可以用python(但是一个小学院不一定有)  反正以后大数都用python写一份吧 也正好复习下python基础语法

T = int(input())for i in range(T):a, b, c = map(int, input().split())if a + b > c:print("Case #%d: true" % (i + 1))else:print("Case #%d: false" % (i + 1))

a, b, c = map(int, input().split())  一行空格输入   a, b, c = map(int, input().split(‘,’))逗号隔开 

 

 

不过大数还是掌握住比较好 防患于未然 

复习:今天写数据结构 

#include<bits/stdc++.h>
using namespace std;//数据结构+算法
//1.整数的高位存在数组的高位,低位存在数组的低位(四则运算都是从低位开始的,方便运算)
//2.输入字符串于字符数组内,总是高位存在低位,低位存在高位,因此需要中间函数change()来转换
//3.输出时,逆序输出(先输出高位,再输出低位)const int N=100;
char str[N];struct bign{int d[N];//存放整数各个位的数字  d[0]个位  d[1]十位 d[2]百位 ...int len;//整数长度 bign(){memset(d,0,sizeof(d));//int数字数组d开始全部初始化为0len=0;//初始长度0 }	
}; //字符串转大整数 低位存在数组低位 也即逆序转
bign change(char str[]){bign a;a.len=strlen(str);for(int i=0;i<a.len;i++){a.d[i]=str[a.len-i-1]-'0';//减去'0'才将char转int 核心 }return a;	
}//比较绝对值大小 a>b 1  a<b -1  a==b 0
int compare(bign a,bign b){if(a.len>b.len) return 1;else if(a.len<b.len) return -1;else{for(int i=a.len-1;i>=0;i--){if(a.d[i]>b.d[i]) return 1;else if(a.d[i]<b.d[i]) return -1;}return 0;//相等 }
}void print(bign a){for(int i=a.len-1;i>=0;i--){printf("%d",a.d[i]);}cout<<endl;
} int main(){cin>>str;bign a=change(str);print(a);cin>>str;bign b=change(str);print(b);cout<<compare(a,b);return 0;
}

 

 

明天写加法与减法   

 

 

 

后天写乘法与除法    

 

 

 

然后不断以T=3   进行循环   从而不再对大数有任何恐惧

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  相关解决方案