例题:for循环迭代法。一个棋盘有n个格子,第一个格子有一粒米,第二个格子有两粒米,第三个格子有四粒米,依次类推,第n个格子里有多少粒米,棋盘里一共有多少粒米。

decimal a = 1;//定义初始值,decimal可以定义比较长的数值
            decimal sum = 1;
            Console.WriteLine("第1个格子里有1粒米");//输出第一句话
            for (int i = 2; i <= 20; i++)//假设棋盘有20个格子,因为上边已经输出第一句话,所以循环初始条件为2
            {
                a = a * 2;//下一个格子里的米是上一个格子里米的2倍,循环计算
                sum = sum + a;//计算的每一个格子里的米都加入sum中,也可以写成sum+=a;
                Console.WriteLine("第" + i + "个格子里有" + a + "个米");//循环输出
            }
            Console.WriteLine("格子里一共有" + sum + "米");//输出最终结果
            Console.ReadLine();

注释:可以最初理解for循环的用法

时间: 2024-10-04 17:13:23

例题:for循环迭代法。一个棋盘有n个格子,第一个格子有一粒米,第二个格子有两粒米,第三个格子有四粒米,依次类推,第n个格子里有多少粒米,棋盘里一共有多少粒米。的相关文章

给定一个英文原文,统计文件里面一共有多少个不同的英文单词

wordsCounter.cpp // wordsCounter.cpp : Defines the entry point for the console application.// #include "stdafx.h"#include "wordsCounter.h" #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif ////

【算法思想】循环移动一个数组

问题:如何将一个数组循环左移或者右移k位? 在下面的解决方案中,我们以循环左移为例. 我们最容易想到的是,将前k个元素复制到一个临时的数组中,然后将剩下的n-k个元素向左移动k个位置,然后将之前的k个元素复制到剩下的位置.这种方法使用了k个额外的存储空间.我们想到到另一种方法是,只借助一个临时空间,每次只向左移动1位,循环k次.这种方法产生了多于的运行时间.前面一篇文章中用程序实现了循环右移一个数组的算法.前面提到的都是比较常规的算法,下面从其它角度来考虑这一问题: 循环数组x其实就是交换数组x

【算法编程】循环右移一个数组

仅用一个辅助节点将一个大小为n数组循环右移k位的三种办法: 1.时间复杂度最大:将所有元素每次只移动一位,总共移动k次,程序实现十分容易,在此就不具体实现了. 2.时间复杂度适中:依次将每个元素都放到辅助节点上,然后将其储存到目的节点,具体程序如下: #include<iostream> using namespace std; int gcd(int x,int y); int main() { int n,k; cout<<"请输入数组的维数"<<

python3中 for line1 in f1.readlines():,for line1 in f1:,循环读取一个文件夹

1 #-*- encoding:utf-8 -*- 2 3 class loadDatas(object): 4 def __init__(self): 5 self.path='./data' 6 def load_compare(self): 7 l1={} 8 f1=open(self.path+'/95b.txt',encoding='utf-8') 9 l2={} 10 f2=open(self.path+'/05b.txt',encoding='utf-8') 11 f=open(s

海滩上有一堆桃子,五只猴子来分。 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份。 * 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的, * 问海滩上原来最少有多少个桃子?

题目:海滩上有一堆桃子,五只猴子来分. 第一只猴子把这堆桃子平均分为五份,多了一个, 这只猴子把多的一个扔入海中,拿走了一份. * 第二只猴子把剩下的桃子又平均分成五份,又多了一个, 它同样把多的一个扔入海中,拿走了一份, 第三.第四.第五只猴子都是这样做的, * 问海滩上原来最少有多少个桃子? 思路1: 逆序 原来 第1只 第2只 第3只 第4只 第5只 n n-n/5-1 m-m/5-1 x-x/5-1 使用递归来解决问题 public class 第四十一题猴子分桃子 { public s

【C语言基础】unsigned short类型用于循环的一个难点

我在我的知识星球:“C语言解惑课堂”里的第一篇提出一个问题:[第1篇][C语言基础][unsigned short类型用于循环的一个难点]要查看更多的C语言难点解析或者需要提问的同学,微信扫扫文末我的星球二维码加入吧! 一.[问题] 同学们,今天来道C语言比较有意思的题,C程序代码见下图. for循环中我给了变量para一个初始值1,也让para自增1,但是没有指定for循环结束的条件.你觉得有问题吗?会不会是一个无穷尽的循环?如果有问题你打算怎么修改呢? 二.[解惑] 这个循环是会终止的,不会

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。 第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?

/* 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份. 第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份, 第三.第四.第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子? 解题思路: 从第五步逆推: 5x+1=4y; 4y+y+1=4z; 4z+z+1=4p; 4p+p+1=4s; 4s+s+1=最初 y=(5x+1)/4; 4z=5y+1=(5x+1)/4*5+1 */ #inc

递归计算战士打靶S次打了N环一共有多少种可能的问题

问题描述 一个战士打了10次靶,一共打了90环,问一共有多少种可能,并输出这些可能的组合. 思路 首先,嵌套10层循环进行穷举是不可取的,一是因为速度太慢,二是如果改成打20次靶就完蛋了. 其实这就是一个树的搜索问题. 1. 设第一次打了0环,那么第二次可能打0 ~ 10环这些可能 2. 以第一次打的0环为root,将第二次所有可能的环数都做为root的子结点 3. 重复1, 2步 这样就构成了一棵树,表示当第一次打了0环时所有的可能性.我们要做的就是从上到下遍历这棵树,当经过的结点之和等于90

递归解决战士打靶N坏一共有多少种可能的问题

问题描述 一个战士打了10次靶,一共打了90环,问一共有多少种可能,并输出这些可能的组合. 思路 首先,嵌套10层循环进行穷举是不可取的,一是因为速度太慢,二是如果改成打20次靶就完蛋了. 其实这就是一个树的搜索问题. 1. 设第一次打了0环,那么第二次可能打0 ~ 10环这些可能 2. 以第一次打的0环为root,将第二次所有可能的环数都做为root的子结点 3. 重复1, 2步 这样就构成了一棵树,表示当第一次打了0环时所有的可能性.我们要做的就是从上到下遍历这棵树,当经过的结点之和等于90

n的阶乘结果中一共有多少个零?

题目:n的阶乘中一共有多少个零? 解答:产生零的结果只能有一种可能性那就是2*5=10,然而n的阶乘本质上是可以拆解为很多2和5以及其他不包含2和5的乘数的积,例如5的阶乘:1*2*3*4*5=1*2*3*2*2*5.按照这个思路,将n的阶乘乘积的每一项进行拆解,看看可以拆解出多少个2和多少个5,然后取2的个数和5的个数中最小的即可.程序代码如下: #include <stdio.h> int compute_zero(int n) { int five_count = 0; int two_