当前位置:编程学习 > C/C++ >>

cf 150&&152 div 2

#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了。。。
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,