我必须使用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
答案 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;