头文件 <cstdio>
freopen("输入文件","r",stdin); //将标准输入重定向到输入文件,r表示读
freopen("输出文件","w+",stdout); //将标准输出重定向到输出文件,w表示写
fclose(stdin);
fclose(stdout);
金币问题
模拟暴力解法(输入输出重定向)
//文件 gold1.cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
freopen("indata.txt","r",stdin);
freopen("out1.txt","w+",stdout);
int k,n=1,d=0;
long long sum=0;
cin>>k;
for(int i=1;i<=k;++i)
{
sum+=n;
d++;
if(d==n)
{
n++;
d=0;
}
}
cout<<sum<<endl;
fclose(stdin);
fclose(stdout);
return 0;
}
优化解法(输入输出重定向)
//文件 gold2.cpp
#include <iostream>
using namespace std;
int main()
{
freopen("indata.txt","r",stdin);
freopen("out2.txt","w+",stdout);
int k,d=0,n=1;
long long sum=0;
cin>>k;
while(k-d>=n)
{
sum+=n*n;
d+=n;
n++;
}
sum+=(k-d)*n;
cout<<sum<<endl;
fclose(stdin);
fclose(stdout);
return 0;
}
这篇博客介绍了C++中通过`freopen`函数实现输入输出重定向,分别展示了暴力解法和优化解法解决金币问题的过程。在暴力解法中,代码逐个累加计算,而在优化解法中使用了更高效的计算方式。这两个例子展示了不同的算法思路在处理相同问题时的效率差异。
1592

被折叠的 条评论
为什么被折叠?



