题目:*~奇数位上都是奇数或者偶数位上都是偶数

题目描述:

给定一个长度不小于2的数组arr。 写一个函数调整arr,使arr中要么所有的偶数位上都是偶数,要么所有的奇数位上都是奇数上。
要求:如果数组长度为N,时间复杂度请达到O(N),额外空间复杂度请达到O(1),下标0,2,4,6…算作偶数位,下标1,3,5,7…算作奇数位,例如[1,2,3,4]调整为[2,1,4,3]即可

题解:

用R语言求1到100的偶数和 r语言求奇数_用R语言求1到100的偶数和


(1)循环遍历arr数组:如果m及n没有到数组最后,遍历数组

(2)偶数位m从0往后遍历数组,如果arr[m]是偶数,满足要求,往后遍历到下一个偶数位

(3)奇数位n从0往后遍历数组,如果arr[n]是奇数,满足要求,往后遍历到下一个奇数位

(4)如果都不满足条件,即偶数位是奇数,奇数位是偶数,则交换

(5)继续遍历完数组

public class Solution {
	/**
	 *	奇数位上都是奇数或者偶数位上都是偶数
	 *	输入:数组arr,长度大于2
	 *	将arr调整成奇数位上都是奇数或者偶数位上都是偶数
	 */
	public void oddInOddEvenInEven(int[] arr) {
          int m=0;
          int n=1;
        while(m<arr.length&&n<arr.length){
            if(arr[m]%2==0){
                m+=2;
                continue;
            }
            if(arr[n]%2==1){
                n+=2;
                continue;
            }
            //执行到这以下代码一定是奇数位是偶数,偶数位是奇数,需要交换
            int tmp=arr[m];
            arr[m]=arr[n];
            arr[n]=tmp;
        }
	}
}

题目:猴子分桃

题目描述:

老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。
第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。
第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。
后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。
这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。

输入描述: 输入包括多组测试数据。 每组测试数据包括一个整数n(1≤n≤20)。 输入以0结束,该行不做处理。

输出描述: 每组测试数据对应一行输出。 包括两个整数a,b。 分别代表开始时最小需要的桃子数,和结束后老猴子最少能得到的桃子数。

题解:

用R语言求1到100的偶数和 r语言求奇数_用R语言求1到100的偶数和_02

用R语言求1到100的偶数和 r语言求奇数_遍历数组_03


用R语言求1到100的偶数和 r语言求奇数_遍历数组_04

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        while(scan.hasNext()){
            int n=scan.nextInt();
            if(n==0) break;
            long a=(long)(Math.pow(5,n)-4);
            long b=(long)(Math.pow(4,n)+n-4);
            System.out.println(a+" "+b);
        }
    }
}