• cf599 div2 a/b1/b2/c


    https://codeforces.com/contest/1243
    A題  給n個數, 問能構成最大的方形邊長,n<=1e3, 用個桶排 逆序輸出最大邊值

    B1題 給兩個字符串 問只交換一次能否使兩字符串相等,直接模擬

    B2題 給兩個長度為n的小寫字母字符串s t, 問能否交換兩個字符串中使得兩字符串相同 交換次數 小於 2n, 

    記錄下每個出現字母次數, 如果有奇數 則無法成功, 否則 每次以 s 的 字符 s[i] 進行枚舉, :

      如果 i 後面s中的字符有 s[j] 等於 s[i]的, 則交換下 s[j]  t[i],

      還有一種情況是  s[i] 等於 t[j], 則先交換下 s[j]  t[j], 再交換下 s[j]  t[i],
    最多 2n 種情況,每次的交換次序可以用 vector < pair<int, int> > 存下

    C題   n <= 1e12,  給一個 n,需要給 1 ……n 塊塗上顔色,  每兩塊 i j  如果 |j - i| = x, x為 n 的非1因子 則 i j 兩塊顔色需要相同
    問最多能有幾種顔色, 我理解的是如果 n 衹有 一個質因子 p 則 最多有 p 種顔色 塗成 1……p 1……p 這樣
     如果有兩個或兩個以上質因子的話 比如 p q, 那任何數 m 都可以表示為 ap+bq = m,故所有的塊都為同色 

    #include <bits/stdc++.h> //cf599 div2
    using namespace std;
    #define ll long long
    #define _for(i,a,b) for(int i = (a); i < (b); i++)
    #define _rep(i,a,b) for(int i = (a); i <= (b); i++)
    #define _per(i,a,b) for(int i = (a); i >= (b); i--)
    
    void taskA(){
        int t,n; 
        cin >> t;
        while (t--) {
            cin >> n;
            int a[1010] = {},x,ma,ret = 0;
            _rep(i,1,n) cin >> x, a[x]++;
    
            _per(i,n,1) {
                ret += a[i];
                if(ret >= i) {ma = i; break;}
            }cout << ma << endl;
        }
    }
    void taskB(){
        int t,n; 
        cin >> t;
        while (t--) {
            cin >> n; cin.get();
            string s1,s2; getline(cin, s1); getline(cin, s2);
            int x = 0, y = 0, cnt = 0;
            _for(i,0,n) {
                if(s1[i] != s2[i]) {
                    cnt++;
                    if(!x) x = i+1;
                    else if(!y) y = i+1;
                }
            }
            if(x && y){
                x--, y--;
                char c1 = s1[x], c2 = s2[y];
                s1[x] = c2, s2[y] = c1;    
            }
        //cout << c1 << " " << c2 << " " << s1 << "  s2 = " << s2 <<endl;
            if((cnt==2 || cnt==0) && s1 == s2) cout << "Yes
    ";
            else cout << "No
    ";
        }
    }
    void taskC(){
        int t,n; 
        cin >> t;
        while (t--) {
            cin >> n; 
            string s1,s2; 
            cin.get();
            cin >> s1 >> s2;
            int x = 0, y = 0, cnt = 0, cnt1[26] = {}, cnt2[26] = {};
            _for(i,0,n) {
                cnt1[s1[i]-'a']++;
                cnt1[s2[i]-'a']++;
            }
            int flag = 0;
            _for(i,0,26) if(cnt1[i]&1) {flag = 1; break;}
            if(flag) cout << "No
    "; 
            else  {         
                if(s1 == s2) continue;
                vector< pair<int, int> > ans;
                _for(i,0,n) 
                    _for(j,i+1,n) {
                        if(s1[i] == s1[j]) {  
                            swap(s1[j], s2[i]);
                            ans.push_back(make_pair(j, i));
                            break;
                        }
                       else if(s1[i] == s2[j]) { 
                           swap(s2[j], s1[n-1]);
                           swap(s2[i], s1[n-1]);
                           ans.push_back(make_pair(n-1, j));
                           ans.push_back(make_pair(n-1, i));
                           break;
                        }
                }
                assert(s1==s2);
                cout << "Yes
    "; cout << ans.size() << endl;
                _for(i,0,ans.size()) cout << ans[i].first+1 << " " << ans[i].second+1 << endl;    
            }
        }
    }
    void taskD(){
        ll n; cin >> n;
        ll q = sqrt(n), cnt = n;
        _rep(i,2,q) {
            if(n%i) continue;
            while(n%i == 0) n /= i;
        //cout << " n = " <<  n << endl;    
            if(n == 1) cout << i << endl;
            else cout << "1
    ";
            return;
        }
        cout << n << endl;
    }
    int main(){
        //taskA();
        //taskB();
        //freopen("output.txt", "w", stdout);
        //taskC();
        taskD();
        return 0;   
    }
    /*
    4
    5
    souse
    houhe
    3
    cat
    dog
    2
    aa
    az
    3
    abc
    bca
    */
  • 相关阅读:
    js 获取时间差
    linq 两个list合并处理,并分组
    单例模式 双锁
    2018年的读书清单
    感悟
    asp.net使用Microsoft.mshtml提取网页标题等解析网页
    //利用反射快速给Model实体赋值
    C# url接口调用
    多字段动态查询
    对图片的操作
  • 原文地址:https://www.cnblogs.com/163467wyj/p/11839198.html
Copyright © 2020-2023  润新知