牛客网NOIP赛前集训营-普及组

第二场:

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代码:
 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 }

猜你喜欢

转载自www.cnblogs.com/acgoto/p/9653118.html