#150上次做了忘寫解題報告了,不過也因為做的很爛,最近想回過頭來重新做一遍。
#152昨天晚上做的,做的也很爛,最近熬夜熬得扛不住了。
先把文章寫這,做完了補上代碼,也算是個提醒吧。
round #150
A。不貼了,太水了。
B。
[cpp]
ll n;
set<int>ss;
void dfs(ll x,int y,int z)//x 為構造的數,y,z分別為2個數字,就是用y和z 2個數字構造的x.
{
if(x>n)return ;
ss.insert(x);
if(x==0&&y==0&&z==0)return ;
if((x==0&&y==0))
{
dfs(x+z,y,z);
}
else if(x==0&&z==0)
{
dfs(x+y,y,z);
}
else
{
dfs(x*10+y,y,z);
dfs(x*10+z,y,z);
}
}
void solveB()
{
cin>>n;
for(int i=0; i<10; i++)
for(int j=0; j<10; j++)
dfs(0,i,j);
cout<<ss.size()-1<<endl;
}
C
D
E
round #152
A,水題。
B。一開始想是JAVA爆搞,因為最多是210次循環,以為能搞,沒想到還是TLE了,因為JAVA大數的運算實在太費時間了。一個pow(10^5)估計就超時了。
然後打了個4-100位的表,發現最後3位是有循環節的。分別是50,80,170,20,200,110。
接下來就很簡單了。
[cpp]
string aa[]={"50","80","170","20","200","110"};
void solveB()
{
int n;
cin>>n;
if(n<=2)
cout<<-1<<endl;
else
{
if(n==3)
cout<<210<<endl;
else
{
int l=n-1-aa[(n-4)%6].size();
cout<<1;
for(int i=0;i<l;i++)
cout<<0;
cout<<aa[(n-4)%6]<<endl;
}
}
}
C
D
E
太水了,趕緊把其他題A了。。。