• 基础算法(三)#蓝桥杯


    11、构造

    11.1、小浩的ABC

    #include
    using namespace std;
    #define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    using ll = long long;
    
    int main(){
    	IOS;
    	int t;cin>>t;
    	while(t--){
    		ll x;cin>>x;
    		// A B C  <=10^6
    		if(x<2){
    			cout<<"-1"<<'\n';continue;
    		}
    		if(x<=1000000){
    			cout<<x-1<<" 1 1"<<'\n';continue;
    		}
    		ll a=1000000,c=x%a,b;
    		if(c==0)c=a;
    		b=(x-c)/a;
    		cout<<a<<' '<<b<<' '<<c<<'\n';
    	}
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    11.2、小新的质数序列挑战

    #include
    using namespace std;
    #define IOS ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    using ll = long long;
    
    int main(){
    	IOS;
    	int T;cin>>T;
    	while(T--){
    		//质数序列,只能被1或本身整除的序列
    		ll a,b;cin>>a>>b;
    		if(a==1||b==1){
    			cout<<"-1\n";continue;
    		}
    		auto gcd = [&](ll a,ll b){
    			while(b!=0){
    				ll t=a%b;
    				a=b;
    				b=t;
    			}
    			return a;
    		};
    		ll g=gcd(a,b);
    		if(g==1){
    			cout<<"1\n";
    		}else{
    			cout<<"0\n";
    		}
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    11.3、小蓝找答案

    #include 
    
    using LL = long long;
    using Pair = std::pair<int, int>;
    #define inf 1'000'000'000
    
    void solve(const int &Case) {
        int n;
        std::cin >> n;
        std::vector<int> a(n);
        for (auto &x: a)std::cin >> x;
        auto ck = [&]() {
            for (int i = 1; i < n; i++) {
                if (a[i] <= a[i - 1])return false;
            }
            return true;
        };
        if (ck()) {
            std::cout << "1\n";
            return;
        }
        int l = 2, r = n, ret = n;
        while (l <= r) {
            int mid = (l + r) >> 1;
            std::vector<Pair> A;
            int flag = 0;
            std::function<void(int)> push = [&](int x) {
                if (x <= 0) {
                    flag = 1;
                    return;
                }
                while (!A.empty() && A.back().first > x)A.pop_back();
                if (A.empty()) {
                    A.emplace_back(x, 1);
                    return;
                }
                if (A.back().first == x) {
                    A.back().second++;
                    if (A.back().second == mid) {
                        push(x - 1);
                        A.emplace_back(x, 0);
                    }
                }
                else {
                    A.emplace_back(x, 1);
                }
            };
            A.emplace_back(a[0], 0);
            for (int i = 1; i < n; i++) {
                if (a[i] > a[i - 1])A.emplace_back(a[i], 0);
                else push(a[i]);
                if (flag)break;
            }
            if (flag)l = mid + 1;
            else {
                ret = mid;
                r = mid - 1;
            }
        }
        std::cout << ret << '\n';
    }
    
    int main() {
        std::ios::sync_with_stdio(false);
        std::cin.tie(nullptr);
        std::cout.tie(nullptr);
        int T = 1;
    //    std::cin >> T;
        for (int Case = 1; Case <= T; Case++)solve(Case);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

    11.4、小蓝的无限集

    #include 
    
    using LL = long long;
    using Pair = std::pair<int, int>;
    #define inf 1'000'000'000
    
    void solve(const int &Case) {
        int a, b, n;
        std::cin >> a >> b >> n;
        if (a == 1) {
            if (n % b == 1)std::cout << "Yes\n";
            else std::cout << "No\n";
            return;
        }
        // 枚举 a ^ i
        LL pw = 1;
        while (pw <= n) {
            if ((n - pw) % b == 0) {
                std::cout << "Yes\n";
                return;
            }
            pw *= a;
        }
        std::cout << "No\n";
    }
    
    int main() {
        std::ios::sync_with_stdio(false);
        std::cin.tie(nullptr);
        std::cout.tie(nullptr);
        int T = 1;
        std::cin >> T;
        for (int Case = 1; Case <= T; Case++)solve(Case);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    12、高精度

    12.1、阶乘数码(高精度*单精度)

    #include
    #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    using namespace std;
    void mult(vector<int>& a,int b){
    	int d=0;
    	for(int i=0;i<a.size();i++){
    		int p=a[i]*b+d;
    		a[i]=p%10;
    		d=p/10;
    	}
    	while(d){
    		a.push_back(d%10);
    		d/=10;
    	}
    }
    int main() {
    	IOS;
    	int t;cin>>t;
    	while(t--){
    		int n,a1;cin>>n>>a1;
    		vector<int> ans(1,1);
    		for(int i=2;i<=n;i++){
    			mult(ans,i);//n的阶乘
    		}
    		int res=0;
    		for(const auto &x:ans){
    			if(x==a1)res++;
    		}
    		cout<<res<<"\n";
    	}
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    越来越难了。。。。。

  • 相关阅读:
    java基于微信小程序的知识分享科普管理系统 uniapp小程序
    MongoDB CRUD操作:地理位置查询
    Windows环境部署ZLMediaKit,支持WebRTC
    字节为什么要去肥增瘦?
    springboot整合nacos
    【运维项目经历|040】高可用Web服务平台:LVS+Apache集群+NFS共享存储系统
    Spring--bean的生命周期
    Linux下的Docker安装,以Ubuntu为例
    Elasticsearch 带中文分词的全文检索(分页+高亮返回)
    SpringBoot整合Spring Security【超详细教程】
  • 原文地址:https://blog.csdn.net/m0_73337964/article/details/136482841