矩形切割
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
例如,对于一块两边分别为 5 和 3 的材料(记为 5×3),小明会依次切出3×3、2×2、1×1、1×1 共 4个正方形。
现在小明有一块矩形的材料,两边长分别是2019 和 324。请问小明最终会切出多少个正方形?
运行限制
最大运行时间:1s
最大运行内存: 128M
参考代码
public class Main {
static int sum=0;
public static void main(String[] args) {
int a=2019,b=324;
f(a,b);
System.out.println(sum);
}
private static void f(int a, int b) {
if(a==b||a==0||b==0) {
sum++;
return;
}else if(a>b) {
int c=a-b;
sum++;
f(c,b);
}else if(a<b) {
int c=b-a;
sum++;
f(a,c);
}
}
}
答案:21
数的分解
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 20192 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
运行限制
最大运行时间:1s
最大运行内存: 128M
参考代码
public class Main {
static int fun(int n)
{
int m;
while(n!=0)
{
m=n%10;
if(m==2||m==4)
return 0;
n=n/10;
}
return 1;
}
public static void main(String[] args) {
int num=0;
int k;
for(int i=1;i<=2019;i++)
for(int j=i+1;j<=2019;j++)
{
k=2019-i-j;
if(k>0&&(i!=j&&i!=k&&j!=k)&&(i<j&&j<k))
{
if(fun(i)+fun(j)+fun(k)==3)
num++;
}
}
System.out.println(num);
}
}
算式问题
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
看这个算式:
☆☆☆ + ☆☆☆ = ☆☆☆
如果每个五角星代表 11 ~ 99 的不同的数字。
这个算式有多少种可能的正确填写方法?
173 + 286 = 459
295 + 173 = 468
173 + 295 = 468
183 + 492 = 675
以上都是正确的填写法!
注意: 111+222=333 是错误的填写法! 因为每个数字必须是不同的!
也就是说:11 ~ 99中的所有数字,每个必须出现且仅出现一次!
注意:不包括数字“0”!
注意: 满足加法交换率的式子算两种不同的答案。 所以答案肯定是个偶数!
运行限制
最大运行时间:1s
最大运行内存: 128M
参考代码
package timeProblem;
public class Main {
static int cut = 0;
public static void main(String[] args) {
int a[] = new int[]{1,2,3,4,5,6,7,8,9};
perm(0,8,a);
System.out.println(cut);
}
public static void perm(int start,int end,int[] a) {
if(start==end) {
int a1 = a[0]*100+a[1]*10+a[2];
int a2 = a[3]*100+a[4]*10+a[5];
int a3 = a[6]*100+a[7]*10+a[8];
if(a1+a2==a3) {
cut++;
}
}else {
for(int i=start;i<=end;i++) {
swap(start,i,a);
perm(start+1,end,a);
swap(start,i,a);
}
}
}
public static void swap(int i,int j,int a[]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}