zoukankan      html  css  js  c++  java
  • 硬币翻转倍数递增试算

    //有何不足或者问题希望能够得到各位的多多指正,不胜感激   
    
    
    
    
    import java.util.Scanner;
    
    /**
     * 
     * @author cc 举例 100枚硬币,最初全部朝下,第一次将所有硬币反转过来, 第二次反转位置是2的倍数的硬币,
     *         第三次反转3的倍数,.....执行一百次,问最终共有多少个硬币面朝上?
     * 
     *         1.硬币正反使用数组 1、0表示,1表示正面,0表示反面;
     *         
     *         
     *         100枚硬币的结果
    int[] ==  1100100001000000100000000100000000001000000000000100000000000000100000000000000001000000000000000000
    	 result coin about 1 nums = 10
     */
    public class CoinTurn {
    
    	private static int[] intCoins;
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int coinNum = inputNum();
    		intCoins = new int[coinNum];
    
    		/*
    		 * 初始化
    		 */
    		for (int i = 0; i < intCoins.length; i++) {
    			intCoins[i] = 0;// 初始化全部朝下,即背面0
    		}
    
    		doTurnCoin();
    
    		int resutltCoin = getCoinNum();
    
    		System.out.println("result coin about 1 nums = " + resutltCoin);// 输出最终正面朝上的个数
    
    	}
    
    	private static void doTurnCoin() {
    		/*
    		 * 翻转操作
    		 */
    		for (int i = 1; i < intCoins.length; i++) {// 确定倍数
    
    			for (int j = i - 1; j < intCoins.length; j++) {// 循环翻转
    				if (j % i == 0) { // 硬币序列数是当前次数的倍数,则翻转
    					if (intCoins[j] == 0) {
    						intCoins[j] = 1;
    					} else {
    						intCoins[j] = 0;
    					}
    				}
    
    			}
    		}
    	}
    
    	private static int getCoinNum() {
    		int countNum = 0;// 记录最终硬币正面个数
    		StringBuffer strB = new StringBuffer();
    		for (int a : intCoins) {
    			strB.append(a + "");
    			if (1 == a)
    				countNum++;
    		}
    		System.out.println("int[] ==  " + strB);// 输出数组的结果
    		return countNum;
    	}
    
    	/*
    	 * coin number
    	 */
    	private static int inputNum() {
    		System.out.println("input coin num: ");
    		Scanner input = new Scanner(System.in);
    		return input.nextInt();
    	}
    
    }
    


  • 相关阅读:
    echarts 地图 动态 展示 结合css+js
    优化之误!
    SQL Server 运行计划操作符具体解释(3)——计算标量(Compute Scalar)
    NHibernate概括
    C++的IO操作
    (数据结构整理)NJUPT1054
    nginx模块开发
    Html学习(三) 分类学习
    android 屏幕适配
    【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)
  • 原文地址:https://www.cnblogs.com/riasky/p/3471554.html
Copyright © 2011-2022 走看看