c ++数学计算

时间:2015-06-18 18:52:00

标签: c++ loops math

我必须使用c ++来解决问题,并且无法真正提出解决方案。

条件是。 在一座摩天大楼里有很多办公室,每个办公室门上都必须放置一个牌号,牌号从1到最后一个办公室。该板只能包含一位数,因此如果办公室号码包含两位数,则必须有两个牌。所有办公室门都需要多少个印版。

文本文件是 duom.txt 。唯一值为“16”。意味着16个办事处。

这是我设法提出的:

select ID, Name, Status1 as Status from tbl
union all
select ID, Name, Status2 from tbl

我知道它不正确,所以有人可以帮我解决这个问题。如果有人尝试编译它也会很高兴,因为我的代码块拒绝使用编译器,即使我单独手动安装它。 :/但那是另一个问题。

-----

似乎已找到解决方案,感谢所有帮助过我的人。

# include <iostream>
# include <cmath>
# include <iomanip>
# include <fstream>
using namespace std;
const char CDfv [] = ("duom.txt");
const char CRfv [] = ("rez.txt");
int main()
{
  int n;
  int m;
  int o;
  int z;
  ifstream fd (CDfv);
  ofstream fr (CRfv);
  fd>>n;

  for (int i=1;i<10;i++) {
    m=n+1;
    for (int j=1;j>=10;j++) {
      o=n+2;
    }
  }
  z=m+o;
  fr<<z<<" ";
}
fd.close();
fr.close();
return 0;
}

这应该可以作为非文本文件变体工作,如魅力,在这里:http://ideone.com/xoFQwn

1 个答案:

答案 0 :(得分:-1)

简单地从1到最大办公室数n进行迭代,并将所需的牌照数量添加到total。对于1到9你需要1个盘子,对于10到99你需要2个,依此类推。我们通过使用限制和步骤来实现这一点。限制表示我们何时需要更多的板块。和步骤表明我们需要这个办公室的板数。

int limit = 10;
int step = 1;
int total = 0;
for ( int i = 1; i<=n ;++i ){
    if (i==limit){
        limit*=10;
        step+=1;
    }
    total += step;
}
cout << total << endl;