本文主要是介绍[7.10] 纪中C组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一题
题目说的很[哔——],然而不顶什么用
说是用最少的二进制数(0,1,10之类的整数)覆盖完整数,然而想一想就可以知道,若采用最优策略,那么最少只需要整数中某一位最大的数的次数就行啦
#include <iostream>
#include <cstdio>
using namespace std;
int k,n,i,j,m;
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);scanf("%d",&k);for (i=1;i<=k;i++){m=0;scanf("%d",&n);for (j=1;j<=7;j++){m=max(m,n%10);n/=10;}printf("%d\n",m);}
}
第二题
KC会先给定一个数字Q,每次操作玩家必须写出当前数字的一个因数来代替当前数字,但是这个因数不能是1和它本身。现在规定第一个没有数字可以写出的玩家为胜者。
简单来说就是谁搞到质数谁就赢了
然后分类讨论
1、给的数字就是质数的时候
2、给的数字只有质因数的时候
3、正常情况
然后我们第一步就是码头文件码一波分解因数,每得到一个因数,就把q除到不能再除为止
然后就是自然分类讨论啦
这[哔——]应该不用我说了吧
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
long long x,q,k,i;
int main()
{freopen("num.in","r",stdin);freopen("num.out","w",stdout);scanf("%lld",&q);k=q;for (i=2;i<=trunc(sqrt(q));i++)while (q%i==0){x++;q/=i;}if ((float)trunc(sqrt(q))==(float)sqrt(q))x++;q=k;if (x==0){printf("1\n0");return 0;}elseif (x==1){printf("2");return 0;}else{x=1;for (i=2;i<=trunc(sqrt((float)q));i++)while (q%i==0){q/=i;x*=i;if (x!=i){printf("1\n%lld",x);return 0;}}}
}
这篇关于[7.10] 纪中C组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!