A 牛牛找数
链接:https://ac.nowcoder.com/acm/contest/10197/A
来源:牛客网
牛牛有两个数a和b,他想找到一个大于a且为b的倍数的最小整数,只不过他算数没学好,不知道该怎么做,现在他想请你帮忙。
给定两个数a和b,返回大于a且为b的倍数的最小整数。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 给定两个数a和b,返回大于a且为b的倍数的最小整数。
* @param a int整型 代表题目中描述的a
* @param b int整型 代表题目中描述的b
* @return int整型
*/
public int solve (int a, int b) {
// write code here
int num=a/b;
return (num+1)*b;
}
}
B 牛牛与三角形
链接:https://ac.nowcoder.com/acm/contest/10197/B
来源:牛客网
牛牛想从n个数中找出三个数来组成一个三角形,只不过牛牛想知道在所有的三角形的组成中,周长最大的三角形的周长减去周长最小的三角形的周长是多少?
牛牛不能够解决该问题,所以他想请你帮忙,给定n个数,返回在所有合法的三角形的组成中,周长最大的三角形的周长减去周长最小的三角形的周长的值。
题目保证每组测试数据中都存在有三个数可以构成三角形,保证答案在int范围内。
这题 n数据量是1000 n3暴力枚举肯定不行。
考虑n2枚举
因为要想组成周长最小的三角形,我们把所有边从小到大排序。要想组成三角形,就得前两边之和大于第三条边,所以取个最小的就行,因为之后的一定更不合适。
看有些题解还二分,麻烦了。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 返回在所有合法的三角形的组成中,最大的三角形的周长减去最小的三角形的周长的值
* @param n int整型 代表题目中的n
* @param a int整型vector 代表n个数的大小
* @return int整型
*/
int solve(int n, vector<int>& a) {
// write code here
sort(a.begin(),a.end());
//先确定最小的
int minn=0x3f3f3f3f;
int maxx=0;
for(int i=0;i<n-2;i++){
for(int j=i+1;j<n-1;j++){
if(a[j+1]<a[i]+a[j]){
if(minn>a[i]+a[j]+a[j+1]){
minn=a[i]+a[j]+a[j+1];
}
}
}
}
for(int i=n-1;i>1;i--){
for(int j=n-2;j>0;j--){
if(a[j-1]+a[j]>a[i]){
if(maxx<a[j-1]+a[j]+a[i]){
maxx=a[j-1]+a[j]+a[i];
}
}
}
}
return maxx-minn;
}
};
链接:https://ac.nowcoder.com/acm/contest/10197/C
来源:牛客网
牛牛有一个长和高都为为\mathit nn的网格三角形,牛牛想从从左下角点走到右上角点,但是牛牛只能向上或者向右沿着网格的边走,牛牛想知道从左下角点走到右上角点的方案数的奇偶性。牛牛现在给你\mathit nn,请你告诉牛牛路径方案数的奇偶性,若是奇数返回true,若是偶数返回false。
发现当n是2的幂次-1,即二进制表示下全为1时,为true
用java大数就行,不必读入。
import java.util.Scanner;
import java.math.BigInteger;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param n string字符串 三角形的长和高
* @return bool布尔型
*/
public boolean judge (String n) {
//Scanner sc=new Scanner(System.in);
//n=sc.next();
//int len=n.length();
//n=n.substring(1,len-2);
BigInteger a=new BigInteger(n);
if(a.and(a.add(BigInteger.ONE)).equals(BigInteger.ZERO))
return true;
return false;
}
}