CodeForcesMaximum splitting(思路)

该博客指出CodeForces的一道题看似可用dp,实则是思路题。除1、2、3、5、7、11外,偶数可分解为4或6,奇数可分解为4、6或9。偶数最大分解个数是n/4,奇数则是n/4减1,具体数学原理待探索。

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

困惑了好久,还以为用dp,其实就是一道简单的思路题,如果通过观察发现,除了1 2 3 5 7 11不能被分解外,其它任何数,如果是偶数可以被分分解为4 或 6,如果是奇数可以分解为4或6或9。
通过计算发现,如果是偶数,那么最大的个数就是n/4,如果是奇数,因为多了一个9减去1即可。具体的数学原理,我也不太清楚,持续探索中。

实现如下(题目附后)

#include <stdio.h>
int main() 
{
    int t,x;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&x);
        if(x<=3||x==5||x==7||x==11)  printf("-1\n");
        else  printf("%d\n", x/4-x%2);
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值