• int型素数拆分


    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
     
    int ans = 0;
    int flag = 0;
    int t1 = 0;
    int t2 = 0;
    void primeFactor(int n){
        while(n % 2 == 0){
            //printf("2 ");
            ans = 1;
            n /= 2;
            t1 ++;
            flag = 1;
        }
        for(int i = 3; i <= sqrt(n); i += 2){
            int t = n;
            while(n % i == 0){
                //printf("%d ", i);
                n /= i;
                if(flag == 0){
                    t1 ++;
                }
                else{
                    t2 ++;
                }
            }
            if(t1 != 0){
                flag = 1;
            }
            if(t != n){
                ans ++;
            }
        }
        if(n > 2){
            ans ++;
            //printf("%d ", n);
            if(flag == 0){t1 ++;}
            else{t2 ++;}
        }
    }
    int main(){
        int n,T;
        char in[100];
        scanf("%d",&T);
        while(T --){
            scanf("%d%s",&n,in);
            flag = 0;t1 = 0;t2 = 0;
            ans = 0;
            primeFactor(n);
            //printf(" %d ",ans);
            //printf("%d %d ",t1,t2);
            if(ans >= 3){printf("tie ");}
            else{
                if(ans == 1){
                    if(t1 % 2 == 0){
                        if(in[0] == 'A'){printf("Bob ");}
                        else{printf("Alice ");}
                    }
                    else{
                        if(in[0] == 'B'){printf("Bob ");}
                        else{printf("Alice ");}
                    }
                }
                else if(ans == 2){
                    if(t1 == t2){
                        if(in[0] == 'A'){printf("Bob ");}
                        else{printf("Alice ");}
                    }
                    else if(max(t1,t2) - min(t1,t2) == 1){
                        if(in[0] == 'B'){printf("Bob ");}
                        else{printf("Alice ");}
                    }
                    else if(max(t1,t2) - min(t1,t2) > 1){
                        printf("tie ");
                    }
                }
            }
        }
     
        return 0;
    }
  • 相关阅读:
    MongoDB4.0以下版本,同一台电脑安装2个MongoDB服务
    CMake编译Mysql connector C++
    Winsock I/O方法
    查看mysql版本的四种方法(转)
    WorkBench,DELETE 标准语句失败
    Qt 透明对话框 自定义透明度
    QString 分割字符串时产生乱码的问题
    winsock error 相关
    线程的分离状态与结合状态
    Oracle 语法
  • 原文地址:https://www.cnblogs.com/love-fromAtoZ/p/8954859.html
Copyright © 2020-2023  润新知