C++ 计算使用while循环需要多少天

C++ 计算使用while循环需要多少天,c++,while-loop,C++,While Loop,一个人在森林里收集了N个袋子。一包他 带回家。第二天,他邀请了一位朋友,带了两个 包回家后,第三天他们每个人都邀请了另一个朋友和朋友 带着4个包回家等等。。。计算一下需要多少天 所有的行李都要带回家。在最后一天,并非所有 朋友必须有一个包 我不知道从哪里开始,除了应该从while开始(N>0) 到目前为止,我已经想到了这个: while (n>0) { n=n-1; if (n!=0) { sum++; } } 如果不先逻辑地解决问题,就无法编写代

一个人在森林里收集了N个袋子。一包他 带回家。第二天,他邀请了一位朋友,带了两个 包回家后,第三天他们每个人都邀请了另一个朋友和朋友 带着4个包回家等等。。。计算一下需要多少天 所有的行李都要带回家。在最后一天,并非所有 朋友必须有一个包

我不知道从哪里开始,除了应该从while开始(N>0)

到目前为止,我已经想到了这个:

while (n>0) {
    n=n-1;
    if (n!=0) {
       sum++;
    }
 }

如果不先逻辑地解决问题,就无法编写代码。在您的情况下,解决方案的关键是要记住,每天回家的行李数量将是前一天的两倍。这是我能想到的最简单的解决方案:

#include <iostream>

int main() {

   int N, days = 0;

   std::cin >> N;

   for ( int i = 1; N > 0; N -= i, i *= 2, ++days );

   std::cout << days;

   return 0;
}
#包括
int main(){
int N,天数=0;
标准:cin>>N;
对于(int i=1;N>0;N-=i,i*=2,++天);

虽然我还在积极学习C++,但是我认为我可以在PHP中循环输出你想要的输出。从我可以收集到的,你需要的公式是<强> n=n- i>强> <强> >i>强:是迭代器,每天加倍,<强> n < /强>是包数……>
  $n = 10; // number of bags gathered
  $i = 1; // iterator for day 1
  $days = array($n); // create an array to help keep track of the days
  $n = $n - $i; // day 1 has to be done outside the loop
  array_unshift($days, $n); // prepend new n value to array

  // while loop
  while ($n > 0) {
    $i = ($i * 2); // double the iterator each day (run)
    $n = $n - $i;
    if ($n > 0) {
      array_unshift($days, $n); // prepend each new n value to array
    }
  }
  // count each item in the array
  echo $numberOfDays = count($days); // outputs 4


在钢笔和纸上用少量的数字检查,每一个都是正确的。我假设这个概念可以应用到C++。

开始用铅笔和纸来解决这个问题。如果有,把它翻译成代码。ῥεῖ. 首先在纸上解决数学问题,然后编写代码。我已经用我认为有效的方法编辑了这篇文章,但是我不确定。从蛮力开始,这样你就有了一些东西,然后做一些数学研究。有一些数学捷径可以将求和序列简化为一行运算。你可能可以利用一对一运算模拟循环。只要想想每天回家的行李数量会比上一天增加2倍。问题是,我必须使用循环,而不是循环。:/你应该能够将
for
转换为
,而
。1)为什么
是一个数组?2)
回声计数($days)
足够了。3)
第1天必须在循环之外完成
为什么?1)我把天作为一个数组来计算变量“n”在达到0之前变化的次数。2)我意识到了这一点,但也很好地将其存储起来,以备以后使用+我试图进行描述。3)我想这不必在循环之外完成,也许如果我玩的话我可以找到一个if语句,允许它在循环中运行,但老实说,这是我能给出的第一个有效答案。
  $n = 10; // number of bags gathered
  $i = 1; // iterator for day 1
  $days = array($n); // create an array to help keep track of the days
  $n = $n - $i; // day 1 has to be done outside the loop
  array_unshift($days, $n); // prepend new n value to array

  // while loop
  while ($n > 0) {
    $i = ($i * 2); // double the iterator each day (run)
    $n = $n - $i;
    if ($n > 0) {
      array_unshift($days, $n); // prepend each new n value to array
    }
  }
  // count each item in the array
  echo $numberOfDays = count($days); // outputs 4