【手把手刷CCF】202209-1-如此编码100分(含思路解释、详细注释与代码)

发布于:2022-11-28 ⋅ 阅读:(311) ⋅ 点赞:(0)

故事的开头总是极尽温柔,故事会一直温柔……💜

✨你好啊,我是“ 怪& ”,是一名在校大学生哦。
🌍主页链接:怪&的个人博客主页
☀️博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
❤️一个“不想让我曾没有做好的也成为你的遗憾”的博主。
💪很高兴与你相遇,一起加油!

一、🌳代码如下:

#include <iostream>
#include <iostream>

using namespace std;

long long n,m;
const int N =30;
long long a[N];
long long b[N];
long long c[N];

int main(){
	cin>>n>>m; //输入个数、数字
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}	
	

	
	c[0]=1;
	long long flag=1;
	for(int i=1;i<=n;i++){//计算c[i]
		c[i]=flag*a[i];
		flag=c[i];
	}
	
	
	for(int i=n;i>=1;i--){//计算b[i]
		long long x=m/c[i-1];
		b[i]=x;
		m=m%c[i-1];
	}
	
	for(int i=1;i<=n;i++){//输出
		cout<<b[i]<<" ";
	}
	return 0;
} 

二、🌵解题思路

1、性质归纳🍠

(1)、题目提示

请添加图片描述

(2)、已知信息
  • Ci表示数组ai的前缀乘积:Ci= a1 * a2 *……ai

2、输入输出🍅

请添加图片描述

(1)、输入:
  • 题目数量:n
  • 神秘数字:m
  • a1 、 a2、 a3 …… an
(2)、求解
  • b1、 b2、 b3 …… bn

3、求解步骤✌

  • (1)、输入
  • (2)、计算C[i](数组ai的前缀乘积
  • (3)、计算b[i](结合题目提示
    请添加图片描述
    由此式子得到应从b[n](Cn最大)开始求
    b[i]=m/c[i-1]
    求b[i]后,将m=m%c[i-1]
    转化为代码如下:
for(int i=n;i>=1;i--){//计算b[i]
		long long x=m/c[i-1];
		b[i]=x;
		m=m%c[i-1];

三、📣题目截图

请添加图片描述

❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭!

请添加图片描述

本文含有隐藏内容,请 开通VIP 后查看