<——求赞
很显然,如果 (n<7),那么显然没有满足条件的方案,又因为数据范围给出 (n>=7),所以一定会有满足条件的方案。
接下来考虑如何构造。我们不妨将前 (n-3) 个点循环涂上前 (4) 种颜色,如 ROYGROYG…,最后三个点再去填剩下三个颜色 BIV。可以发现无论 (n-3)mod 4 的余数是什么,这样的填色方案一定能够满足题目要求。
C++
#include<bits/stdc++.h>
using namespace std;
int n;
const string s = "ROYGBIV";
int main(){
cin >> n;
for(int i=0; i <= n - 4; i++) putchar(s[i % 4]);
for(int i=4; i <= 6; i++) putchar(s[i]);
return 0;
}
Python3
s="ROYGBIV"+"GBIV"*25;
n=int(input())
print(s[0:n])
Go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
rd := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(rd, &n)
i ,j := 0 , 0
res := make([]byte,n)
nums := []byte{'R','O','Y','G','B','I','V'}
for i < n {
res[i] = nums[j]
j++
i++
if j == 7 {
j -= 4
}
}
fmt.Println(string(res))
}
Java
import java.util.*;
public class Main{
public static void main(String[] args){
char[] w = new char[]{'R','O','Y','G','B','I','V'};
Scanner sc =new Scanner(System.in);
int n = sc.nextInt();
for(int i = 0; i < n; i++){
if(n - i <= 3){
System.out.print(w[(n - i -1) % 4 + 4]);
}else{
System.out.print(w[(i%4)]);
}
}
}
}
C
#include <stdio.h>
int main() {
int n,m,x,y;
scanf("%d",&n);
char RGB[1000]="GBIVGBIV";
m=n%7;x=n/7;
for(int i=0;i<x;i++)printf("ROYGBIV");
for(int i=0;i<m;i++)putchar(RGB[i]);
return 0;
}
想了半个小时不会,没想到思路这么简单。
C 和 C++ yyds!
...............................................................................................................................................................................................................................................................................................................................................
Good
#几岁会这么多语言?
明显的嫉妒你和incra斗上了嘛
(为啥没有我,我的题解可比你详细)你这道题写题解了吗?
马上写。。。。。。
##先n%7=m
##余数m为边界需要特殊判断的个数
##之后对于最后的m个数,都往后取两位即可
赞
。。。
e
。。。
e
。。。
e
。。。