不要二、求最小公倍数、证明一个数是否为斐波那契数

1.java 语言使用的字符码集是(D)
A.ASCII
B.BCD
C.DCB
D.Unicode
2.不要二
https://www.nowcoder.com/questionTerminal/1183548cd48446b38da501e58d5944eb
二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
小易想知道最多可以放多少块蛋糕在网格盒子里。

//**    **   **
//**    **   **
//    **   **   **
//    **   **   **
//**    **   **
//**    **   **
//只要数清楚,每个4行中,
//i或i+1行的蛋糕数为 (n / 4) * 2 + (n % 4 < 2 ? n % 4 : 2)
//i+2或i+3行的蛋糕数为 ((n - 2) / 4) * 2 + ((n - 2) % 4 < 2 ? (n - 2) % 4 : 2)
//然后算清楚一共有多少个完整的4行就行, 当然是共有m / 4 个。
//唯一要注意的就是处理行数除4有余数的情况,把最后可能剩余的1~3 行加进去。
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt(), n = sc.nextInt();
        int evenICount = (n / 4) * 2 + (n % 4 < 2 ? n % 4 : 2);
        int oddICount = ((n - 2) / 4) * 2 + ((n - 2) % 4 < 2 ? (n - 2) % 4 : 2);
        int ans = m / 4 * (evenICount + oddICount) * 2;
        if (m % 4 > 0) ans += evenICount;
        if (m % 4 > 1) ans += evenICount;
        if (m % 4 > 2) ans += oddICount;
        System.out.println(ans);
    }
}

3.求最小公倍数

public class Test8 {
    private static int Solution(int a,int b){
        int min = Math.min(a,b);
        int max = Math.max(a,b);
        int index = (max/min)+1;
        for(int i = 2;i<9;i++){
            if(min%i==0&&max%i==0){
                while ((min*index)%max!=0){
                    index++;
                }
                return min*index;
            }
        }
        if(max%min==0){
            return max;
        }
        return max*min;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int result = Solution(a,b);
        System.out.println(result);
    }
}
//方法二
//于两个数的乘积等于这两个数的最大公约数与最小公倍数的积
//求最大公约数:
//1. a/b,令r为所得余数(0≤r<b) 若r=0,算法结束,a即为答案
//2. 互换:置 a←b,b←r,并返回第一步
public class Main {
    public static int lcm(int m, int n) {
        return (m * n) / gcd(m, n);
    }
    private static int gcd(int a, int b) {
        if (b == 0) return a;
        return gcd(b, a % b);
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        System.out.println(lcm(a, b));
    }
}

4.证明一个数是否为斐波那契数

public class Test10 {
    private static int Fab(int n){
        if(n==1||n==2){
            return 1;
        }
        return Fab(n-1)+Fab(n-2);
    }
    private static boolean fab(int num){
        int index = 1;
        while (Fab(index)<num){
            index++;
        }
        if(Fab(index)==num){
            return true;
        }else {
            return false;
        }
    }
    public static void main(String[] args) {
        System.out.println(fab(13));
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 斐波那契数列是指从和1开始,后面的每一项都是前面两项的和,即、1、1、2、3、5、8、13、21、34、55、89、144……依此类推。 如果要求斐波那契数列中大于t的最小的一个,可以使用循环来遍历斐波那契数列,找到第一个大于t的即可。 具体实现方法如下: 1. 定义两个变量a和b,分别表示斐波那契数列中的前两个和1。 2. 使用while循环遍历斐波那契数列,每次计算出下一个c,即c=a+b。 3. 如果c大于t,则直接返回c,即为大于t的最小的一个。 4. 如果c小于等于t,则将a和b分别赋值为b和c,继续循环计算下一个。 5. 如果遍历完整个斐波那契数列都没有找到大于t的,则返回-1表示不存在。 代码实现如下: def fibonacci(t): a, b = , 1 while True: c = a + b if c > t: return c a, b = b, c return -1 # 测试 print(fibonacci(10)) # 输出13 print(fibonacci(100)) # 输出144 print(fibonacci(100)) # 输出1597 ### 回答2: 斐波那契数列指的是一个列,其中每个字都是它前面两个字之和,即F(n) = F(n-1) + F(n-2),其中F(0) = 0,F(1) = 1。 要求斐波那契数列中大于t的最小的一个,可以使用循环来计算斐波那契数列,并在计算过程中判断每个数是否大于t,若大于t则返回该。 具体实现如下: ``` def fibonacci(t): """ 计算斐波那契数列中大于t的最小的一个 """ # 初始化斐波那契数列前两个字 a = 0 b = 1 # 循环计算斐波那契数列 while True: # 计算下一个字 c = a + b # 判断c是否大于t,若是则返回c if c > t: return c # 更新a和b的值 a = b b = c ``` 以上是一种基本的实现方法,还可以使用递归方法来实现斐波那契数列的计算,但是递归的效率不如循环高。无论采用哪种方法,都要注意处理值越界的情况,以保证程序的正确性。 ### 回答3: 斐波那契数列(Fibonacci sequence)是指:从第三项开始,每一项均为前两项之和,即F(n)=F(n-1)+F(n-2),其中F(0)=0,F(1)=1。 如果要求斐波那契数列中大于t的最小的一个,可以通过以下步骤实现: 1.设置初始值为F(0)=0和F(1)=1,并计算F(2)=F(1)+F(0)=1,F(3)=F(2)+F(1)=2,F(4)=F(3)+F(2)=3,F(5)=F(4)+F(3)=5,以此类推。 2.在计算中,如果发现某一项大于t,则直接输出该项的值,停止计算。 3.如果所有项都小于等于t,则继续计算下一项,直到出现大于t的项为止。 4.如果计算到某一项的值大于t时,还出现了小于t的值,那么需要记录下比t大的最小值,直到计算完成,返回这个最小值即可。 Python代码如下: def fibonacci(t): f0, f1 = 0, 1 while(True): f2 = f0 + f1 if f2 > t: return f2 f0, f1 = f1, f2 print(fibonacci(10)) # 输出结果为13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值