C - Win or Freeze

CodeForces - 151C

题目内容:

    You can't possibly imagine how cold our friends are this winter in Nvodsk! Two of them play the following game to warm up: initially a piece of paper has an integer q. During a move a player should write any integer number that is a non-trivial divisor of the last written number. Then he should run this number of circles around the hotel. Let us remind you that a number's divisor is called non-trivial if it is different from one and from the divided number itself.

    The first person who can't make a move wins as he continues to lie in his warm bed under three blankets while the other one keeps running. Determine which player wins considering that both players play optimally. If the first player wins, print any winning first move.
Input The first line contains the only integer q (1 ≤ q ≤ 1013). Please do not use the %lld specificator to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specificator.
Output In the first line print the number of the winning player (1 or 2). If the first player wins then the second line should contain another integer — his first move (if the first player can't even make the first move, print 0). If there are multiple solutions, print any of them.
Examples
Input 6 Output 2 Input 30 Output 1
6 Input 1 Output 1
0 Note Number 6 has only two non-trivial divisors: 2 and 3. It is impossible to make a move after the numbers 2 and 3 are written, so both of them are winning, thus, number 6 is the losing number. A player can make a move and write number 6 after number 30; 6, as we know, is a losing number. Thus, this move will bring us the victory.

题意:给出一个数n,两个人轮流对其进行操作,把这个数换成他的非平凡因数(除了1和其本身的数)nn,如果那个人不能再对nn进行操作了,那他就赢了。在第一行中,打印获胜人的编号(1或2)。如果第一个玩家赢了,那么第二行应该包含另一个整数--他的第一个动作(如果第一个玩家连第一个动作都做不到,就打印0)。如果有多个解决方案,就打印其中任何一个。

题解:

当n为1或者质数时,找不到非平凡因数,所以第一个人一定赢;

当n为两个质数的乘积时,第二个人赢,因为第一个人要将该数换成它的非平凡数,而该数为质数,下一个人无法再进行操作。

其他情况时,第一个人只要把n换成是两个质数相乘而来的数就可以赢。

计算出n的所有质因数;

当n为8,那质因数为2,2,2;

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n;
cin>>n;
if(n==1)
{
cout<<1<<"\n"<<0<<endl;
}
else{
ll q=n,ct=0;
vector<ll>s;
for(ll i=2;i*i<=n;i++)//找出所有质因数
{
while(n%i==0)
{
s.push_back(i);
n/=i;
++ct;
}
}
if(n!=1&&n!=q)s.push_back(n),++ct;//此时的n为质数,所以要记录下来
if(ct>2)cout<<1<<endl,printf("%I64d\n",s[0]*s[1]);
else if(ct==2)cout<<2<<endl;
else cout<<1<<endl<<0<<endl;
}
}

D - Quantity of Strings

CodeForces - 151D

题意:给出字符串的长度n,可使用的字符种类m,求使得任意k个子字符串都是回文的方案有多少个;

题解:当k为1或者k>n时,种类有m^n个;

当k=n时,有m^((k+)/2)种;

当k为奇数时有m*m种;

偶数时有m种;

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll show(ll m,ll n)
{
ll ct=1;
ll mod=1000000007;
for(ll i=1;i<=n;i++)
{
ct*=m;
ct%=mod;
}
return ct;
}
int main()
{
ll n,m,k;
scanf("%lld%lld%lld",&n,&m,&k);
if(k>n||k==1)printf("%lld\n",show(m,n));
else if(k==n)printf("%lld\n",show(m,(k+1)/2));
else if(k%2!=0)printf("%lld\n",m*m);
else printf("%lld\n",m); }

2021-5-15 vj补题的更多相关文章

  1. 2021.5.22 vj补题

    A - Marks CodeForces - 152A 题意:给出一个学生人数n,每个学生的m个学科成绩(成绩从1到9)没有空格排列给出.在每科中都有成绩最好的人或者并列,求出最好成绩的人数 思路:求 ...

  2. QFNU-ACM 2021.10.09 Rating补题

    A - A CodeForces - 478A 注意点: 和为0时要特判一下. 代码: #include<bits/stdc++.h> using namespace std; int m ...

  3. 【补题记录】ZJU-ICPC Summer Training 2020 部分补题记录

    补题地址:https://zjusummer.contest.codeforces.com/ Contents ZJU-ICPC Summer 2020 Contest 1 by Group A Pr ...

  4. 2020.12.20vj补题

    A - Insomnia cure 题意:一共s只龙,每隔k,l,m,n只龙就会受伤,问这s只龙有多少龙是受伤的 思路:看起来题目范围并不是很多,直接进行循环判断 代码: 1 #include< ...

  5. hdu5017:补题系列之西安网络赛1011

    补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为m ...

  6. 2017河工大校赛补题CGH and 赛后小结

    网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直 ...

  7. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  8. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  9. [数]补题ver.

    上次补题好像把两次训练混在一起了,总之先按时间顺序补完这一次|ू・ω・` ) HDU-6301 不会的东西不能逃避.jpg 红小豆非常讨厌构造题,因为非常不会,并且非常逃避学习这类题,因为总也搞不清楚 ...

随机推荐

  1. Linux centos7 pstree

    2021-08-12 1.命令简介pstree (display a tree of processes) 命令用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以直观地看出是谁创建了谁. ...

  2. golang jwt

    什么是JWT? JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. JWT作用? ...

  3. 手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 设备

    作者 连泓乔,华南理工计算机科学与技术大三在读,主要研究容器领域,Kubernetes.容器等云原生技术爱好者,SuperEdge 优秀贡献者. 王冬,腾讯云研发工程师,专注于 Kubernetes. ...

  4. 用XPath定位Web页面元素时,如何快速验证XPath语句是否正确?

    在使用Selenium做Web UI自动化测试的过程中,XPath是一种定位页面元素的常用方式.然而,面对某些元素的XPath路径过于复杂,我们想快速验证拼凑的Xpath语句是否正确时,该怎么办呢?这 ...

  5. Django+Ansible构建任务中心思路

    Ansible作为老牌的自动化运维工具,由Python开发,应用广泛,但其默认只提供了命令行下的使用方式,好在提供有完善的API支持二次开发,可以很方便的集成到我们的自动化运维系统中 最近一个朋友跳槽 ...

  6. Install Docker Engine on CentOS 在CentOS 7 上安装Docker

    Install Docker Engine on CentOS OS Requirements 系统要求 To install Docker Engine,you need a maintained ...

  7. Spring Boot入门系列(二十六)超级简单!Spring Data JPA 的使用!

    之前介绍了Mybatis数据库ORM框架,也介绍了使用Spring Boot 的jdbcTemplate 操作数据库.其实Spring Boot 还有一个非常实用的数据操作框架:Spring Data ...

  8. 【数据库上】第五讲 E-R模型扩展知识

    第五讲 E-R模型扩展知识 一.E-R模型设计主意问题 1.1 用实体还是实体集 案例:学院对象的表示 应将各个学院看做实体集,还是实体? 方法一:将各个学院看作一个实体集 如果各学院具有不同属性特征 ...

  9. call、apply、bind三者比较

    var obj={a:1}; var foo={ getA:function(item1,item2){ return this.a+item1+item2 } } // apply绑定参数为数组,一 ...

  10. 【OI】C++STL初步 排序与检索

    从紫皮书过来的,但是书中内容讲的比较简洁,做一点补充笔记. 一.排序(sort函数) 头文件:<algorithm> 语法:sort(start,end,cmp); start,end必须 ...