n个人每个人有不同数值的钱,需要凑出y钱,并且使每个人剩余下来的钱尽可能一样多,钱只能是整数。例如有ABCD4个人,钱数分别是4,3,2,1,然后需要凑5元。那么结果应该是A出3元B出2元,CD不用出,生下来就是A1B1C2D1,钱多的先出去,要使得每个人剩下来的钱尽可能一样多
1条回答 默认 最新
- 你知我知皆知 2024-07-26 13:31关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
#include <stdio.h> int main(){ int n,y; scanf("%d%d",&n,&y); int a[n],b[n]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); } for(int i=0;i<n;i++){ scanf("%d",&b[i]); } int sum=0; for(int i=0;i<n;i++){ sum+=a[i]+b[i]; } if(sum<y){ printf("No"); return 0; } int c[sum/2+1]={}; int i,j,k,l,m,n; for(i=0;i<=sum/2;i++){ c[i]=i; } for(k=1;k<sum/2+1;k++){ l=k; m=0; while(m<c[l]){ m++; j=c[m]-k; if(j>y)break; k=j; m++; } if(l==m-1){ c[k]=l; }else{ int tmp=l; l=m-1; m=tmp; } } for(i=0;i<n;i++){ if(a[i]+b[i]!=c[y-a[i]-b[i]]){ printf("No"); return 0; } } printf("Yes"); }
解决 无用评论 打赏 举报
悬赏问题
- ¥20 python忆阻器数字识别
- ¥15 无法输出helloworld
- ¥15 高通uboot 打印ubi init err 22
- ¥20 PDF元数据中的XMP媒体管理属性
- ¥15 R语言中lasso回归报错
- ¥15 网站突然不能访问了,上午还好好的
- ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
- ¥15 semrush,SEO,内嵌网站,api
- ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
- ¥15 振荡电路,ADS仿真