呐,你想成为什么颜色呢?#1109

本文介绍了一种利用M线将画布分块的算法,通过递归公式f(n)=f(n-1)+16*(n-1)+1计算画布最多可被分成的块数。该算法适用于画家在创作过程中对画布进行有效分割,以实现更精细的绘画效果。

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

 

真白在画画时有一个技巧,就是用形似“M”的线将画布分块,然后再将设计好的图像表现在画布上,这就是她成为天才画家的秘密(误,虽然她除了美术其他都不在行,但她是知道画布被分成了多少块的。
今天真白想画她最爱的年轮面包,而你被她的画所吸引,为她的优雅所陶醉,希望能够将属于自己的一份颜色表现在她的画里。但这并非是那么简单的事。现在她告诉你她已经画了若干条“M”线,请你回答出她的画布最多被分成了多少块,如果你答对了,她就可以为你添上一彩。
呐,你想成为什么颜色呢?

输入要求

输入数据有多组,每组一行一个整数n(1 <= n <= 1000)表示“M”线的数量。输入到文件末尾。

输出要求

对于每组输入,输出一行一个整数,表示n条“M”线最多能把画布分成的块数。

测试数据示例 1

0
1
2

输出

1
2
19

推导过程参考该文章:https://blog.youkuaiyun.com/destiny1507/article/details/81228610

//p为图形个数大于一增加一个图形多出来的交点
通用公式:f(n) = f(n-1)+p*(n-1)+1;

//M形状每增加一个会多出16个交点
那么该题公式:f(n) = f(n-1)+16*(n-1)+1;
import java.util.Scanner;

/**
 * @Auther: Quincy
 * @Date: 2020/4/8 22:25
 * @Description:
 */
//p为增加一个图形多出来的交点
//M形状每增加一个会多出16个交点
//f(n) = f(n-1)+p(n-1)+1;
public class Main {
    static long  f(int n)
    {
        if (n==0) return 1;
        if (n==1) return 2;
        return f(n-1)+16*(n-1)+1;
    }
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt())
        {
            int n=scanner.nextInt();
            System.out.println( f(n));
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡宝全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值