Codechef Nuclear Reactors 题解

本文介绍了一种解决核反应堆中粒子分布问题的高效算法。该算法通过数学计算而非模拟过程来确定不同室中粒子的最终分布情况,适用于给定总数、阈值及室数量的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

There are K nuclear reactor chambers labelled from 0 to K-1. Particles are bombarded onto chamber 0. The particles keep collecting in the chamber 0. However if at any time, there are more than N particles in a chamber, a reaction will cause 1 particle to move to the immediate next chamber(if current chamber is 0, then to chamber number 1), and all the particles in the current chamber will be be destroyed and same continues till no chamber has number of particles greater than N. Given K,N and the total number of particles bombarded (A), find the final distribution of particles in the K chambers. Particles are bombarded one at a time. After one particle is bombarded, the set of reactions, as described, take place. After all reactions are over, the next particle is bombarded. If a particle is going out from the last chamber, it has nowhere to go and is lost.

Input

The input will consist of one line containing three numbers A,N and K separated by spaces.
A will be between 0 and 1000000000 inclusive.
N will be between 0 and 100 inclusive.
K will be between 1 and 100 inclusive.
All chambers start off with zero particles initially.

Output

Consists of K numbers on one line followed by a newline. The first number is the number of particles in chamber 0, the second number is the number of particles in chamber 1 and so on.

Example

Input:
3 1 3
Output:
1 1 0

找出规律就好办,利用规律解决问题,而不是模拟过程。

#pragma once
#include <vector>
#include <string>
#include <algorithm>
#include <stack>
#include <stdio.h>
#include <iostream>
using namespace std;

int NuclearReactors()
{
	int A, N, K;
	cin>>A>>N>>K;
	N++;
	int *tbl = new int[K];
	int t = A;
	for (int i = 0; i < K; i++)
	{
		tbl[i] = t % N;
		t /= N;
	}
	for (int i = 0; i < K; i++)
	{
		printf("%d ", tbl[i]);
	}
	printf("\n");
	delete [] tbl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值