• cf 151 C. Win or Freeze (博弈 求大数质因子)


    题目

    题意:

    给一个数N,两人轮流操作
    每次将N变为一个N的非1非自身的因数,第一个无法进行操作的人获胜
    问先手是否有必胜策略,如果有的话在第二行输出第一步换成哪个数,如果第一步就不能操作则输出0
    数据规模:N≤10^13。

    思路:

    当N为1或者质数时,先手胜且输出0
    当N恰为两个质数的乘积时,先手负,因为他必须写下一个质数,使后手获胜
    其他情况下,他只要写下N的任意两个质因数的乘积就能获胜。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <vector>
     4 #include <cstdio>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     long long i;
    10     long long q;
    11     vector<long long>v;
    12     while(cin>>q)
    13     {
    14        v.clear();
    15        for(i = 2; i*i <= q; i++)
    16           while(q%i==0)
    17             {
    18                 v.push_back(i);
    19                 q /= i;
    20             }
    21         if(q>1)
    22             v.push_back(q);
    23 
    24         if(v.size()<2)
    25         printf("1
    0
    ");
    26         else if(v.size()==2)
    27             printf("2
    ");
    28         else
    29             printf("1
    %d
    ", v[0]*v[1]);
    30     }
    31     return 0;
    32 }

    求一个数的质因数的模板:

    可能有重复的, 如输入8  会输出:2 2 2;

    也有可能只有自身,如输入11 输出11

    但是v数组里的数的乘积就等于 输入的数字。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <vector>
     4 #include <cstdio>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     long long i;
    10     long long q;
    11     vector<long long>v;
    12     while(cin>>q)
    13     {
    14        v.clear();
    15        for(i = 2; i*i <= q; i++)
    16           while(q%i==0)
    17             {
    18                 v.push_back(i);
    19                 q /= i;
    20             }
    21         if(q>1)
    22             v.push_back(q);
    23 
    24         for(i = 0; i < v.size(); i++)
    25         {
    26            cout<<v[i]<<" ";
    27         }
    28         cout<<endl;
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    揺する、揺らす、揺さぶる区別
    test
    W5N1のW2D2
    微软企业库6的使用方法
    Delphi XE6 原生解析json
    delphi URL 编码的转换
    Go语言配置与开发环境配置
    Win7 IIS下启用ASP.NET
    Windows2003远程桌面单会话登录
    IIS7应用程序池集成和经典的区别
  • 原文地址:https://www.cnblogs.com/bfshm/p/3685177.html
Copyright © 2020-2023  润新知