第二场:
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.
输出描述:
如果 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 代码:
- import java.util.Scanner;
- import java.math.BigInteger;
- public class Main { public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- BigInteger c = new BigInteger("9223372036854775807");
- BigInteger d = new BigInteger("-9223372036854775808");
- while(scan.hasNext()){
- BigInteger a = scan.nextBigInteger();
- BigInteger b = scan.nextBigInteger();
- a = a.add(b);
- if(a.compareTo(d)==-1||a.compareTo(c)==1)
- System.out.println("\"hello, %lld\\n\"");
- else System.out.println(a);
- }
- }
- }
B - 最后一次
题目描述
牛牛最近学习了质数的概念.
质数指在大于 1 的自然数中, 除了 1 和它本身以外不再有其他因数.
输入一个 n, 输出小于等于 n 最大的质数.
输入描述:
输入一个整数 n
输出描述:
输出小于等于 n 的最大的质数
示例 1
输入
2
输出
2
示例 2
输入
100
输出
97
备注:
对于所有数据: 2 <= n <= 1000000000000
30 分: n <= 100000
70 分: n <= 1000000000
解题思路: 简单暴力一下即可.
AC 代码:
- #include<iostream>
- #include<algorithm>
- #include<cstdio>
- #include<string.h>
- using namespace std;
- typedef long long LL;LL n;
- bool is_prime(LL n){
- for(LL i=2;i*i<=n;++i)
- if(n%i==0)return false;
- return true;
- }
- int main(){
- while(~scanf("%lld",&n)){
- for(LL i=n;i>1;--i)
- if(is_prime(i)){printf("%lld\n",i);break;}
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2769536.html