北京天坛的圜丘坛为古代祭天的场所,分上、中、下三层,上层中心有一块圆形石板(称为天心石),环饶天心石砌9块扇面形石板构成第一环,向外每环依次增加9块,下一层的第一环比上一层的最后一环多9块,向外每环依次也增加9块,已知每层环数相同,且下层比中层多729块,则三层共有扇面形石板(不含天心石)
用java代码怎么实现
假设环数是n,
上层的石板:9 9+9 9+9+9 。。。 9*n
中层石板:9*n+9 9*n+9+9.。。。 9*n+9*n
下层石板:9*n+9*n+9 9*n+9*n+9+9 ... 9*n+9*n+9*n
下层减去上层就是9*n + 9*n + ...+ 9*n = 9*n*n = 729,计算出n=9(也就是每层9环)。
剩下的就是累加就是了,代码如下,如有帮助,请帮忙采纳一下,谢谢。
public static void main(String[] args){
int n = (int) Math.sqrt(729/9); //
int sum1 = 0,sum2=0,sum3=0;
for(int i=1;i<=n;i++){
sum1 += i;
sum2 += n+i;
sum3 += 2*n+i;
}
int sum = 9*(sum1 + sum2+sum3);
System.out.print(sum);
}
你先思考一下转换成数学模型是什么样的
简单点,穷举法 暴利破解吧。
public class HillyAltar {
/**
* 相邻环之间的石板增量
*/
static final int SLATE_INCREMENT = 9;
/**
* 一共有三层,将层抽象成类,就可以创建三个对象了。
*/
static class Floor {
final int firstRing; // 每层第一环的石板数量
final int numOfRings;// 每层石板的环数
int lastRing; // 每层最后一环的石板数量
int totalSlates; // 每层石板的总数
Floor(int firstRing, int numOfRings) {
this.firstRing = firstRing;
this.numOfRings = numOfRings;
lastRing = firstRing;
totalSlates = firstRing;
for (int i=1; i < numOfRings; i++) {
lastRing += SLATE_INCREMENT;
totalSlates += lastRing;
}
}
public int getLastRing() {
return lastRing;
}
public int getTotalSlates() {
return totalSlates;
}
}
/**
* 穷举法暴利破解
*/
public static void main(String[] args) {
// 穷举法的边界,最大尝试的环数
int maxNumOfRings = 1000;
// 假设每层有n环,然后循环穷举
for (int n=2; n <= maxNumOfRings; n++) {
Floor f1 = new Floor(9, n);
Floor f2 = new Floor(f1.getLastRing()+SLATE_INCREMENT, n);
Floor f3 = new Floor(f2.getLastRing()+SLATE_INCREMENT, n);
if (f3.getTotalSlates() - f2.getTotalSlates() == 729) {
// 命中条件
System.out.println(String.format("每层有%d环石板", n));
break;
}
}
}
}
结果:
每层有9环石板
下面开始笔算解题:
1.等差数列相关公式:
2.天坛分三层,每层环数相同,假设每层都有n环:
3.上述三个公式可以构成等式,带入通项公式和推导公式,即可求解。(d=9)
4.得到:
5.最终:
n=9