• 蓝桥杯2013年D题错误代码


    #include<iostream>
    #include<bits/stdc++.h>
    using namespace std;
    int n = 50;
    
    string add(string a,string b)
    {
        a = a.substr(a.find_first_not_of('0'));
        b = b.substr(b.find_first_not_of('0'));
        long long lena = a.length();
        long long lenb = b.length();
        long long len = max(lena,lenb);
        
        reverse(a.begin(),a.end());
        reverse(b.begin(),b.end());
        string ans(len,'0');
        for(int i = 0;i < lena;i++)
        {
            ans[i] = a[i];
        }
        int temp = 0;
        for(int i = 0;i < len;i++)
        {
            if(i < b.length())
                temp += (ans[i] - '0') + (b[i] - '0');
            else
                temp += (ans[i] - '0');
            ans[i] = temp % 10 + '0';
            temp = temp / 10;
        }
        
        reverse(ans.begin(),ans.end());
        return ans.substr(ans.find_first_not_of('0'));
        
    }
    
    int cmp(string a,string b)
    {
        unsigned long i1 = a.find_first_not_of('0');
        if(i1 == string::npos)
            a = '0';
        else
            a.substr(i1);
        unsigned long i2 = b.find_first_not_of('0');
        if(i2 == string::npos)
            b = '0';
        else
            b.substr(i2);
        if(a.length() > b.length()) 
            return 1;
        else if (a.length() < b.length()) 
            return -1;
        else
        {
            if(a < b)
                return -1;
            if(a > b)
                return 1;
            else 
                return 0;
        }
    }
    
    string subtract(string a,string b)
    {
        reverse(a.begin(),a.end());
        reverse(b.begin(),b.end());
        
        string ans(a.length(),'0');
        for(int i = 0;i < a.length();i++)
        {
            ans[i] = a[i];
        }
        
        for(int i = 0;i < b.length();i++)
        {
            if(a[i] >= b[i])
                ans[i] = a[i] - b[i] + '0';
            else
            {
                int k = 1;
                while(a[i + k] == '0')
                {
                    ans[i + k] = '9';
                    k++;
                }
                ans[i + k] = a[i + k] - '1' + '0';
                
                ans[i] = a[i] - '0' + 10 - (b[i] - '0') + '0';
            }
        }
        reverse(ans.begin(),ans.end());
        if(ans.find_first_not_of('0') == string::npos)
            return "0";
        return ans.substr(ans.find_first_not_of('0'));
    }
    
    void i2s(int t,string t_str)
    {
        t_str = t % 10 + '0';
    }
    
    string divide(string a,string b)
    {
        string ans = "0.";
        for(int i = 0;i < 101;i++)
        {
            int t = 0;
            while(cmp(a,b) >= 0)
            {
                a = subtract(a,b);
                t++;
            }
            string t_str;
            i2s(t,t_str);
            ans.append(t_str);
        }
        
        return ans;
    }
    
    
    
    int main()
    {
        string a = "10";
        string b = "4";
        cout << divide(a,b) << endl;
        for(int i = 3;i <= n;i++)
        {
            
            string tmp = b;
            b = add(a,b);
            a = tmp;
        }
        
        //ab是斐波那契的n-1和n项
        string ans = divide(a,b);
    //    cout << ans << endl; 
        
        return 0;
    }
  • 相关阅读:
    第10天 面向对象
    ubuntu16.04安装openssh中报错解决
    白帽子讲web安全——访问控制
    白帽子讲web安全——认证与会话管理
    常见的文件上传绕过和文件解析漏洞
    常见的文件包含漏洞
    红队在Windows 10上迁徙问题
    Mimikatz 法国神器
    端口转发 Port Forwarding (一)
    SOAR平台初探(一)
  • 原文地址:https://www.cnblogs.com/biaobiao88/p/12404390.html
Copyright © 2020-2023  润新知