2025.1.24总结
题目描述
给定一个正整数 𝑛n,对 𝑛n 分解质因数。
设 𝑛=𝑝1×𝑝2×𝑝3×⋯×𝑝𝑥n=p1×p2×p3×⋯×px,其中 𝑝𝑖pi 均为质数。
如果 𝑝𝑖pi 均为奇数,则称 𝑛n 为『只因数』。
现在,给出若干个 𝑛n,请你判断 𝑛n 是不是『只因数』。
输入格式
本题单测试点内有多组测试数据。
第一行是一个整数,表示数据组数 𝑇T。
接下来 𝑇T 行,每行一个整数,表示一组数据的 𝑛n。
输出格式
对每组数据,输出一行一个字符串。如果 𝑛n 是『只因数』,请输出 Yes
,否则输出 No
。
输入输出样例
输入 #1复制
5 2 3 4 6 9
输出 #1复制
No Yes No No Yes
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long n;
int l=1,k=0;
int a[100];
scanf("%lld",&n);
for(int i=2;i<=sqrt(n);i++)
{
while(n % i==0)
{
n/=i;
a[k++]=i;
}
}
if(n>1)
{
a[k++]=n;
}
for(int i=0;i<k;i++)
{
for(int j=2;j<=sqrt(a[i]);j++)
{
if(a[i] % j==0)
{
l=0;
break;
}
}
}
if(l==0)
{
printf("No\n");
}
if(l)
{
for(int i=0;i<k;i++)
{
if(a[i] % 2==0)
{
l=0;
break;
}
}
if(l==0)
{
printf("No\n");
}
if(l==1)
{
printf("Yes\n");
}
}
}
return 0;
}
题目背景
语文考试结束了,成绩还是一如既往地有问题。
题目描述
语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗?
输入格式
第一行有两个整数 𝑛n,𝑝p,代表学生数与增加分数的次数。
第二行有 𝑛n 个数,𝑎1∼𝑎𝑛a1∼an,代表各个学生的初始成绩。
接下来 𝑝p 行,每行有三个数,𝑥x,𝑦y,𝑧z,代表给第 𝑥x 个到第 𝑦y 个学生每人增加 𝑧z 分。
输出格式
输出仅一行,代表更改分数后,全班的最低分。
输入输出样例
输入 #1复制
3 2 1 1 1 1 2 1 2 3 1
输出 #1复制
2
代码:
#include <stdio.h>
int main()
{
int n,p;
scanf("%d %d",&n,&p);
int scores[n];
for(int i=0;i<n;i++)
{
scanf("%d",&scores[i]);
}
for(int i=0;i<p;i++)
{
int x,y,z;
scanf("%d %d %d",&x,&y,&z);
for(int j=x-1;j<y;j++)
{
scores[j]+=z;
}
}
int min_score=scores[0];
for(int i=1;i<n;i++)
{
if(scores[i]<min_score)
{
min_score=scores[i];
}
}
printf("%d\n",min_score);
return 0;
}
了解并查集