1、切面条
题目
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢?
问题分析
//处理不折叠的情况意外,每次对折会新增两根
//理论分析,每次 是在原有的基础上 新增了二倍的条数、
//因为是连续对折,可以通过连续累加计算,
//每次是都是二的指数增加
//计算,对折次数和段数的关系
//0-2. 1-3。 2-5 3-9 规律分析,二的对折次数的次方加1
代码实现
package 刷题;
import java.util.Scanner;
public class 切面条 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
double x = sc.nextInt();
sc.close();
double duan = Math.pow(2, x)+1;
System.out.println(duan);
int res = (int)duan;
System.out.println(res);
}
}
输入测试数据,结果正确
大衍数列
题目
中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。
它的前几项是:0、2、4、8、12、18、24、32、40、50 …
其规律是:对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。
以下的代码打印出了大衍数列的前 100 项。
请填补空白处的内容。
问题分析
//是指就是在分别为0、奇数、偶数时进行不同运算
//由自然数计算得出的数列所以直接用循环的i即可
//利用取模运算判断奇数偶数,运算输出即可
//其规律是:
//对偶数项,是序号平方再除2,奇数项,是序号平方减1再除2。
//?这里计入0,毕竟0也是偶数,所以开头会有两个0
代码实现
package 刷题;
public class 大衍数列 {
public static void main(String[] args) {
for (int i = 0; i < 101; i++) {
if (i%2==0) {
int res = (i*i)/2;
System.out.println(res);
}else if (i%2!=0) {
int res1 = ((i*i)-1)/2;
System.out.println(res1);
}
}
}
}
输出结果(部分)
门牌制作
题目
/*小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,
最后根据需要将字符粘贴到门牌上,
例如门牌 1017 需要依次粘贴字符 1、0、1、7,
即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?*/
问题分析
//向知道需要多少个2
//可以通过遍历每一个门派
//然后获取每一位,如果是2就计数
代码实现
package 刷题;
public class 门派制作2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 0;
for(int i=1;i<=2020;i++){
int x =i;//直接使用i,会发生死循环..........
while(x>0){
if(x%10==2){//取模10检查每一位是否为2,为2的话,计数+1
count++;
}
x=x/10;//获取每一位结合取模
}
}
System.out.println(count);
}
}
输出结果624