列表

详情


NC54592. AHUICPC (Hard Version)

描述

本题的Easy Version与Hard Version的唯一区别是数据范围不同,因此可以通过Hard Version的代码可以直接通过Easy Version。
AHU ACM/ICPC实验室有着悠久而光荣的历史,学长学姐们拿过金牌,进过Google。无论经过多少人,我们都希望AHU ACM/ICPC实验室可以代表AHU的最高水平。正所谓与天壤而同久,共三光而永光。
现在给定一个整数n,表示AHU ACM/ICPC实验室经过了代人。你需要让每个人得到一个字符串"AHUICPC",但由于n可能是一个很大的数,所以将字符串分给每一个人是不可行的。所以你现在要构造一个字符串,使得字符串中恰好有n个子序列为"AHUICPC",且字符串的长度不超过
对于字符串S,我们定义为S的长为n的子序列,其中。当且仅当被视作同一个子序列。
比如对于字符串"abbc",其中存在两个子序列为"abc",存在一个子序列为"ac",但是不存在子序列"cb"。

输入描述

输入一个整数,表示你需要构造的字符串中含有n个子序列"AHUICPC"。

输出描述

输出一行。一个长度不超过的字符串。

示例1

输入:

1

输出:

AHUICPC

示例2

输入:

2

输出:

AHUIICPC

原站题解

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

C++14(g++5.4) 解法, 执行用时: 10ms, 内存消耗: 408K, 提交时间: 2019-12-05 21:24:11

#include<bits/stdc++.h> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	int a=sqrt(n),b=n/a;
	int c=n-a*b;
	for(int i=0;i<a;i++) {
		cout<<"A";
	}
	for(int i=0;i<b-1;i++) {
		cout<<"H";
	}
	for(int i=0;i<n-a*b;i++) {
		cout<<"A";
	}
	cout<<"HUICPC"<<endl;
	return 0;
}

C 解法, 执行用时: 3ms, 内存消耗: 388K, 提交时间: 2023-05-21 00:49:04

#include <stdio.h>
#include <math.h>
int main()
{
    long long n,a,i;
    scanf("%lld",&n);
    a=sqrt(n);
    for(i=1;i<=a;i++)
    printf("A");
    for(i=1;i<n/a;i++)
    printf("H");
    for(i=1;i<=n%(a*(n/a));i++)
    printf("A");
    printf("HUICPC");
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 480K, 提交时间: 2020-03-12 14:50:33

#include <bits/stdc++.h>
 
using namespace std;
 
int n;
 
int main(){
    scanf("%d", &n);
    int a = sqrt(n), b = n / a, c = n - a * b;
    while(a--) putchar('A');
    while(--b) putchar('H');
    while(c--) putchar('A');
    puts("HUICPC");
}

Python3(3.5.2) 解法, 执行用时: 20ms, 内存消耗: 3568K, 提交时间: 2020-09-29 17:42:20

n = int(input())
a = int(n**0.5)
b = n // a
c = n - a*b
print('A'*a + 'H'*(b-1) + 'A'*c + 'HUICPC')

上一题