zoukankan      html  css  js  c++  java
  • 2021.5.15 1rating 补题报告

    C - Win or Freeze

    1.思路

      题目给定一个数,两个人轮流操作:把这个数换成他的非平凡因数,如果有个人不能操作了,那么这个人就赢了。输出第几个人胜利,如果第一个人胜利,则还要输出它的第一次操作。如果我制造出一个只有两个质数的数,这样对手只能取走其中一个,然后我走不动了,我就赢了,特判n为1。

    2.代码

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 const int maxn = 2e5 + 5;
     5 ll n;
     6 ll a[maxn];
     7 int cnt;
     8 bool judge(ll x) {
     9     for(ll i = 2; i * i <= x; i++) {
    10         if(x % i == 0) {
    11             return false;
    12         }
    13     }
    14     return true;
    15 }
    16 void fenjie(ll x) {
    17     for(ll i = 2; i * i <= x; i++) {
    18         if(x % i == 0 && judge(i)) {
    19             while(x % i == 0) {
    20                 a[++cnt] = i;
    21                 x /= i;
    22             }
    23         }
    24         if(cnt >= 2) {
    25             break;
    26         }
    27     }
    28     if(x > 1) {
    29         a[++cnt] = x;
    30     }
    31 }
    32 int main() {
    33     cin >> n;
    34     if(n == 1 || judge(n)) {
    35         cout << 1 << endl << 0 << endl;
    36         return 0 ;
    37     }
    38     fenjie(n);
    39     if(cnt == 2 && a[1]*a[2] == n) {
    40         cout << 2 << endl;
    41     } else {
    42         cout << 1 << endl;
    43         printf("%lld
    ", a[1] * a[2]);
    44     }
    45     
    46     return 0 ;
    47  }
    View Code
  • 相关阅读:
    订餐系统
    throw和throws
    CF999E Solution
    CF1142B Solution
    CF965C Solution
    CF963B Solution
    CF999F Solution
    CF975D Solution
    CF997B Solution
    hdu 2553 N皇后
  • 原文地址:https://www.cnblogs.com/lvguapi/p/14823186.html
Copyright © 2011-2022 走看看