第二场:
A-你好诶加币
题目描述
牛牛刚学习了输入输出,他遇到了一道这样的题目。
输入2个整数a和b
保证输入的a和b在long long范围之内,即满足
-9223372036854775808 <= a, b <= 9223372036854775807
计算a+b的值,即这两个数字的和。
如果a+b在long long范围之内,即满足
-9223372036854775808 <= a + b <= 9223372036854775807
那么输出一行一个整数表示a+b的结果。
如果a+b不在long long范围之内,即越界了,那么输出"hello, %lld\n",包含引号。
具体可以参见样例。
保证输入的a和b在long long范围之内,即满足
-9223372036854775808 <= a, b <= 9223372036854775807
计算a+b的值,即这两个数字的和。
如果a+b在long long范围之内,即满足
-9223372036854775808 <= a + b <= 9223372036854775807
那么输出一行一个整数表示a+b的结果。
如果a+b不在long long范围之内,即越界了,那么输出"hello, %lld\n",包含引号。
具体可以参见样例。
输入描述:
输入只有一行,包含用空格分开的两个整数,表示a和b。
输出描述:
如果a+b在long long范围之内,输出一行一个整数,表示a+b的结果;否则输出"hello, %lld\n",包含引号。
示例1
输入
-9223372036854775808 9223372036854775807
输出
-1
示例2
输入
9223372036854775807 1
输出
"hello, %lld\n"
备注:
正确计算a+b可以得到50分
正确输出"hello, %lld\n"也可以得到50分
解题思路:java大数简单判断即可。
AC代码:
1 import java.util.Scanner; 2 import java.math.BigInteger; 3 public class Main { 4 public static void main(String[] args) { 5 Scanner scan = new Scanner(System.in); 6 BigInteger c = new BigInteger("9223372036854775807"); 7 BigInteger d = new BigInteger("-9223372036854775808"); 8 while(scan.hasNext()){ 9 BigInteger a = scan.nextBigInteger(); 10 BigInteger b = scan.nextBigInteger(); 11 a = a.add(b); 12 if(a.compareTo(d)==-1||a.compareTo(c)==1) 13 System.out.println("\"hello, %lld\\n\""); 14 else System.out.println(a); 15 } 16 } 17 }
B-最后一次
题目描述
牛牛最近学习了质数的概念。
质数指在大于1的自然数中,除了1和它本身以外不再有其他因数。
输入一个n,输出小于等于n最大的质数。
输入描述:
输入一个整数n
输出描述:
输出小于等于n的最大的质数
示例1
输入
2
输出
2
示例2
输入
100
输出
97
备注:
对于所有数据: 2 <= n <= 1000000000000
30分: n <= 100000
70分: n <= 1000000000
解题思路:简单暴力一下即可。
AC代码:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<string.h> 5 using namespace std; 6 typedef long long LL;LL n; 7 bool is_prime(LL n){ 8 for(LL i=2;i*i<=n;++i) 9 if(n%i==0)return false; 10 return true; 11 } 12 int main(){ 13 while(~scanf("%lld",&n)){ 14 for(LL i=n;i>1;--i) 15 if(is_prime(i)){printf("%lld\n",i);break;} 16 } 17 return 0; 18 }