A题
大水题
- #include
-
- using namespace std;
-
- int h[10010];
- int t,n,m,a,k,b;
-
- void zhang(int h[])
- {
-
- while(--m)
- {
- for(int i=1;i<=n;i++)
- {
- h[i]+=a;
- if(h[i]>k) h[i]=b;
- }
- }
- for(int i=1;i<=n;i++)
- {
- cout<
' '; - }
- }
-
-
- int main()
- {
- cin>>t;
- while(t--)
- {
- cin>>n;
- for(int i=1;i<=n;i++)
- {
- cin>>h[i];
- }
- cin>>a>>k>>b;
- cin>>m;
- zhang(h);
- cout<
- }
- return 0;
- }
B题
这题核心是弄懂为什么只有0.1输出
因为询问的数小于等于数字个数,分为两种情况
1.所有数的和加起来等于询问的数的倍数,余零。
2.因为个数大于要询问的数n,所以和的余数种类要小于个数。所以去掉一个数可以满足所有的余数情况。
- #include
- using namespace std;
-
- int t,l,r,m,n;
- long long int sum;
-
- int main()
- {
- cin>>t;
- while(t--)
- {
- cin>>l>>r;
- sum=1ll*(l+r)*(r-l+1)/2;
- cin>>m;
- while(m--)
- {
- cin>>n;
- if(sum%n==0) cout<<0;
- else cout<<1;
- cout<
- }
- }
- return 0;
- }
C题
先放一段别人代码,这题思路是只要质因子不同两个数组就不同。故分解质因子再比较就可以了。
- #include
- using namespace std;
- int n;
- int a[100005];
- int b[100005];
- int mp[1000005];
- int main()
- {
- cin>>n;
- for(int i = 1;i<=n;++i)
- {
- cin>>a[i];
- int x = a[i];
- for(int j = 2;j<=sqrt(x);++j)
- while(x%j==0)
- {
- mp[j]++;
- x/=j;
- }
- if(x>1)
- mp[x]++;
- }
- for(int i = 1;i<=n;++i)
- {
- cin>>b[i];
- int x = b[i];
- for(int j = 2;j<=sqrt(x);++j)
- while(x%j==0)
- {
- if(mp[j])
- {
- cout<<"No\n";
- return 0;
- }
- x/=j;
- }
- if(x>1)
- {
- if(mp[x])
- {
- cout<<"No\n";
- return 0;
- }
- }
- }
- cout<<"Yes\n";
- return 0;
- }
可恶啊,为什么我写的不行啊,甚至用了线性筛法,双指针结果还是不行。明天继续,把剩下题肝完。
#include
using namespace std;
const int N=1010;
int n,cnt=0,cnt1=0,cnt2=0,prime[10000],a[N],b[N],c[N];
bool flag=true,st[10000],st1[N];
void primes()
{
for(int i=2;i<=100000;i++)
{
if(!st[i]) prime[cnt++]=i;
for(int j=0;j<=100000/i;j++)
{
st[i*prime[j]]=true;
if(i%prime[j]==0) break;
}
}
}
void judge(int x)
{
if(x==1) flag=false;
for(int i=0;i {
if(x%prime[i]==0)
{
if(!st1[prime[i]])
{
c[cnt1++]=prime[i];
st1[i]=true;
}
}
}
}
int main()
{
cin>>n;
primes();
for(int i=1;i<=n;i++)
{
cin>>a[i];
judge(a[i]);
}
cnt2=cnt1;
for(int i=1;i<=n;i++)
{
cin>>b[i];
judge(b[i]);
}
for(int i=0,j=0;i {
while(a[cnt1-cnt2+j]>=a[i])
{
if(a[cnt1-cnt2+j]==a[i])
flag=false;
j++;
}
}
if(flag) cout<<"Yes";
else cout<<"No";
return 0;
}
深夜加代码真的有种意境的(笑)
-
相关阅读:
用sql server知识回答
C语言实现希尔排序
软件设计师 下午题第四题
如何在自动化测试中使用MitmProxy获取数据返回?
Redis——》数据类型:Hash(哈希)
文本内容安全审核
图_图的存储_添加边_图的遍历_DFS_树的重心_BFS_图中点的层次
基于Django+node.js+MySQL+杰卡德相似系数智能新闻推荐系统——机器学习算法应用(含Python全部工程源码)+数据集
kube-scheduler framework
【GIS奇妙之旅】遥感图像分类技术
-
原文地址:https://blog.csdn.net/weixin_73922932/article/details/128045910