列表

详情


NC247236. Karashi的生日蛋糕

描述

今天是 Karashi 的生日,Karashi 决定亲手制作一个大水果蛋糕来庆生!Karashi忙活了一个下午,总算做好了蛋糕,现在就剩下在蛋糕上点缀水果了,但是在水果的摆放问题上犯了难。
Karashi决定将水果摆放成圈,每圈的水果各不相同,且第圈必须有个水果。
已知有人前来为 Karashi 庆生,所以 Karashi 最终需要把蛋糕沿半径均分成块。
为了平均分蛋糕,要求每块蛋糕包含第圈的水果个,并且任意两块蛋糕包含的水果总个数相差不得超过 1 。(表示将向下取整,表示将向上取整)
现在请你告诉Karashi一种水果的摆放方案,满足上述条件。

输入描述

一行包括两个正整数

输出描述

输出行,每行表示一块蛋糕。
每行输出个非负整数,第行第个数表示第块蛋糕拥有的第圈水果的个数。

示例1

输入:

5 5

输出:

0 0 1 1 1
0 0 1 1 1
1 0 1 0 1
0 1 0 1 1
0 1 0 1 1

说明:

示例2

输入:

1 2

输出:

1
0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 178ms, 内存消耗: 57164K, 提交时间: 2022-12-30 20:24:12

#include <bits/stdc++.h>
using namespace std;
int n, m,cnt;
int main(){
  cin>>n>>m; vector<vector<int>>a(m,vector<int>(n,0));
  for(int i=0;i<n;i++){
    for(int j=0;j<m;j++)a[j][i] += (i+1)/m;
    for(int j=0;j<(i+1)%m;j++,cnt=(cnt+1)%m)
      a[cnt][i]++;
  }
  for(int i=0;i<m;i++)
    for(int j=0;j<n;j++)
      cout<<a[i][j]<<" \n"[j==n-1];
}

pypy3 解法, 执行用时: 1354ms, 内存消耗: 181752K, 提交时间: 2022-12-30 23:06:14

n,k=map(int,input().split())
a=[[0]*n for _ in range(k)]
r=0
for j in range(n):
    s,v=(j+1)%k,(j+1)//k
    for i in range(k):
        a[i][j]+=v
    while s:
        a[r][j]+=1
        r=(r+1)%k
        s-=1
for i in range(k):
    for x in a[i]:
        print(x, end=" ")
    print()

上一题