对拍
- 朴素(保证一定正确)
#include <bits/stdc++.h>
using namespace std;
int f[5010];
int main()
{
int n;
cin>>n;
f[1]=1;
f[2]=2;
for(int i=3;i<=n;i++)
{
f[i]=f[i-1]+f[i-2];
}
cout<<f[n];
return 0;
}
- 正解
#include <bits/stdc++.h>
using namespace std;
vector<int> f[5010];
vector<int> add(vector<int> &a,vector<int> &b)
{
if(a.size()<b.size())
{
return add(b,a);
}
int t=0;
vector<int> C;
for(int i=0;i<a.size();i++)
{
t+=a[i];
if(i<b.size())
{
t+=b[i];
}
C.push_back(t%10);
t/=10;
}
if(t!=0)
{
C.push_back(t);
}
return C;
}
int main()
{
int n;
cin>>n;
f[1].push_back(1);
f[2].push_back(2);
for(int i=3;i<=n;i++)
{
f[i]=add(f[i-1],f[i-2]);
}
for(int i=f[n].size()-1;i>=0;i--)
{
cout<<f[n][i];
}
return 0;
}
- 对拍
#include <bits/stdc++.h>
using namespace std;
int main()
{
srand(time(0));
int n=rand()%30+1;
cout<<n;
return 0;
}
- check.exe
#include <iostream>
using namespace std;
int main()
{
int flag=0;
for(int i=1;i<=10;i++)
{
system("data.exe > data.in");
system("test.exe < data.in > test.out");
system("high-precision.exe < data.in > test.ans");
if(system("fc test.out test.ans")!=0)
{
flag=1;
break;
}
}
if(flag==0)
{
puts("the same");
}
return 0;
}