AT5749 Subarray Sum
2021/8/30 23:06:31
本文主要是介绍AT5749 Subarray Sum,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
一道比较简单的题。(
完了完了完了要开学了要开学了。。。
题目大意
给定三个整数 \(N,K,S\)。
请你找到一个 \(N\) 个元素的整数序列,其中每一个元素在区间 \([1,10^9]\) 内。这个序列满足 \(K\) 个子序列的和为 \(S\)。
分析
要求有 \(K\) 个子序列的和是 \(S\),那么我们直接输出 \(K\) 个 \(S\),剩下的我们就让它始终不能出现和为 \(S\) 就行了,那么可以就可以再输出 \(n-k\) 个 \(10^9\),这可以在大部分情况下保证正确性。
上面仅仅是大部分情况下。
说一下特殊情况,比如说 4 2 1000000000
这样的例子,当 \(S=10^9\) 时,我们则输出 \(n-k\) 个 \(10^9-1\) 即可。
代码
//2021/8/30 #include <iostream> #include <cstdio> #define debug(c) cerr<<#c<<" = "<<c<<endl namespace Newstd { inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0' || ch>'9') { if(ch=='-') { f=-1;ch=getchar(); } } while(ch>='0' && ch<='9') { x=x*10+ch-48;ch=getchar(); } return x*f; } inline void print(int x) { if(x<0) { putchar('-');x=-x; } if(x>9) { print(x/10); } putchar(x%10+'0'); } } using namespace Newstd; using namespace std; int main(void) { int n,k,s; scanf("%d%d%d",&n,&k,&s); for(register int i=1;i<=k;i++) { printf("%d ",s); } for(register int i=k+1;i<=n;i++) { if(s==1e9) { printf("99999999 "); } else { printf("1000000000 "); } } return 0; }
这篇关于AT5749 Subarray Sum的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?