@ZHANGQIANYI2020
HNUCM-OJ 牛妹的蛋糕,尼科彻斯定理,汽车加油问题,数字交换,最优装载,XP的小视频
问题 A: 牛妹的蛋糕
(时间限制: 1 Sec 内存限制: 128 MB)
题目描述:
众所周知,牛妹非常喜欢吃蛋糕。
第一天牛妹吃掉蛋糕总数三分之一多一个,第二天又将剩下的蛋糕吃掉三分之一多一个,以后每天吃掉前一天剩下的三分之一多一个,到第n天准备吃的时候只剩下一个蛋糕。
牛妹想知道第一天开始吃的时候蛋糕一共有多少呢?
输入:
输入n,0<n< 30。
输出:
输出第一天蛋糕的数量。
样例输入:
2
4
样例输出:
3
10
参考答案:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int s[]=new int[105];
s[1]=1;
for(int i=2;i<s.length;i++) {
s[i]=((s[i-1]+1)*3)/2;
}
System.out.println(s[n]);
}
}
}
问题 B: 尼科彻斯定理
(时间限制: 1 Sec 内存限制: 128 MB)
题目描述:
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
输入:
多组输入,输入一个整数。
输出:
输出分解后的字符串。
样例输入:
6
样例输出:
31+33+35+37+39+41
参考答案:
import java.util.Scanner;
public class 尼科彻斯定理{
public static void fun(int n) {
if(n==1)
System.out.println(1);
int m = (int)Math.pow(n, 3);
int sum = 0;
for (int i = 1; i < (m / 2); i += 2){
int a = i;
sum = i;
for (int j = 1; j < n; j++){
a = a + 2;
sum += a;
}
if (sum != m)
continue;
else {
for (int k = 0; k < n; k++) {
if (k == n - 1)
System.out.println(i + 2 * k);
else
System.out.print((i + 2 * k) + "+"