Java硬币翻转倍数递增试算实例

 更新时间:2013年12月13日 16:38:42   作者:  
这篇文章主要介绍了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();
 }

}

相关文章

  • servlet重定向详解(八)

    servlet重定向详解(八)

    这篇文章主要为大家详细介绍了servlet重定向的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Java的@Transactional、@Aysnc、事务同步问题详解

    Java的@Transactional、@Aysnc、事务同步问题详解

    这篇文章主要介绍了Java的@Transactional、@Aysnc、事务同步问题详解,现在我们需要在一个业务方法中插入一个用户,这个业务方法我们需要加上事务,然后插入用户后,我们要异步的方式打印出数据库中所有存在的用户,需要的朋友可以参考下
    2023-11-11
  • java 在file的尾部添加数据的两种方法总结

    java 在file的尾部添加数据的两种方法总结

    这篇文章主要介绍了java 在file的尾部添加数据的两种方法总结的相关资料,这里提供了两种在file尾部添加数据的方法,希望能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • 如何利用Java使用AOP实现数据字典转换

    如何利用Java使用AOP实现数据字典转换

    这篇文章主要介绍了如何利用Java使用AOP实现数据字典转换,AOP也是我们常说的面向切面编程,AOP在我们开发过程中应用也比较多,在这里我们就基于AOP来实现一个数据字典转换的案例
    2022-06-06
  • java实现数组中的逆序对

    java实现数组中的逆序对

    这篇文章主要为大家详细介绍了java实现数组中的逆序对,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 解决FastJson中

    解决FastJson中"$ref重复引用"的问题方法

    这篇文章主要介绍了解决FastJson中"$ref重复引用"的问题方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • SpringBoot定时任务的实现详解

    SpringBoot定时任务的实现详解

    这篇文章主要介绍了SpringBoot定时任务的实现详解,定时任务是企业级开发中最常见的功能之一,如定时统计订单数、数据库备份、定时发送短信和邮件、定时统计博客访客等,简单的定时任务可以直接通过Spring中的@Scheduled注解来实现,需要的朋友可以参考下
    2024-01-01
  • JAVA String类中的一些常用方法示例详解

    JAVA String类中的一些常用方法示例详解

    在我们的工作中,常常要对一个字符串进行一些操作,这里提供一些常用的方法,常常需要这些方法进行组合处理字符串,这篇文章主要给大家介绍了关于JAVA String类中的一些常用方法,需要的朋友可以参考下
    2023-10-10
  • Spring中的@Cacheable缓存注解详解

    Spring中的@Cacheable缓存注解详解

    这篇文章主要介绍了Spring中的@Cacheable缓存注解详解,数据库查找的流程是先要从磁盘拿到数据,再刷新到内存,再返回数据。磁盘相比于内存来说,速度是很慢的,为了提升性能,就出现了基于内存的缓存,需要的朋友可以参考下
    2023-05-05
  • Spring MVC启动之HandlerMapping作用及实现详解

    Spring MVC启动之HandlerMapping作用及实现详解

    这篇文章主要为大家介绍了Spring MVC启动之HandlerMapping作用及实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论