Java硬币翻转倍数递增试算实例
发布时间:2021-09-29 08:39:22
//有何不足或者问题希望能够得到各位的多多指正,不胜感激
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();
}
}


猜你喜欢
- 一、前言 做过系统参数设置的同学们,肯定遇到过要提供一系列具有相同特点的选项供用户选择。
- 输入一个数组,然后颠倒次序进行输出,这种算法在程序开发
- 在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使 co
- 其实以前我对Java的Struts框架没有具体认识,通过这篇文章,真的让我了解了框架的用处,好处。下拉框在Web开发中经常会使用到,下面我们
- 首先为大家介绍Andorid5.0原生下拉刷新简单实现。先上效果图;相对于上一个19.1.0版本中的横条效果好看了很多。使用起来也很简单。
- 本文实例汇总了Java的System.getProperty()方法获取信息的用法。分享给大家供大家参考。具体如下:System.out.p
- spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现
- 运算符运算符,顾名思义就是用来执行数学运算的。在Java中运算符可以分为:算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算
- 前言在之前的文章中介绍过线程池的核心原理,在一次面试中面试官让手写线程池,这块知识忘记的差不多了,因此本篇文章做一个回顾。希望能够加深自己的
- .NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using Sys
- 前言在java Thread类中,我们会看到interrupt()、interrupted()及isInterrupted(),在大多数情况
- 本文实例讲述了C#实现在前端网页弹出警告对话框(alert)的方法。分享给大家供大家参考。具体如下:通常我们通过JS生成警告对话框,下面的代
- System.Threading.Mutex :同步基元,它只向一个线程授予对共享资源的独占访问权。实现原理: 在程序启动时,请求一个互斥体
- 短信链接跳转APP平时我们会收到广告短信,比如某东,某宝,里面附加着链接,当你点开链接(手机自带的浏览器),发现浏览器打开后,等一下下,就会
- .net core提供了Json处理模块,在命名空间System.Text.Json中,下面通过顶级语句,对C#的Json功能进行讲解。序列
- 字符, 字节与字符串字符与字符串字符串内部包含一个字符数组,String 可以和 char[] 相互转换.字符数组变为字符串:public
- Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像。Problem: 拍好照片,点击裁剪,弹Toast“无法加载
- 在去年的时候,在各种渠道中略微的了解了SpringBoot,在开发web项目的时候是如何的方便、快捷。但是当时并没有认真的去学习下,毕竟感觉
- 前言CyclicBarrier和CountDownLatch这两个工具都是在java.util.concurrent包下,并且平时很多场景都
- 本文实例为大家分享了Java Socket实现多人聊天系统的具体代码,供大家参考,具体内容如下前言GitHub地址开发环境:Eclipse