每日一题<AcWing 1209. 带分数>

简介: 每日打卡

image.png

本题来自于第四届蓝桥杯省赛C++B/C组,对于刚开始学习算法的人来讲可能相对较难,题目要求将一个分数分解成三个部分,一个整数一个分子一个分母,这里分别用a b c 来分别表示。同时要求1~9的所有数字都必须出现,且不能出现0。这里至少我们可以将数字的使用个数固定,不妨通过枚举的方式,对a c进行枚举(b的数字较c大所以枚举c的效率更高)。之后用剩下的位数将b反推出来,最后用数学方法判断当前的方案是否可行,若可行便可以记录在结果之中,全部枚举一遍之后就可以得出最后的答案。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 10;
bool sta[N], backup[N];
int n, ans;
bool check(int a, int c)   //判断方案的可行性
{
    long long b = n * (long long)c - a * c;
    if (!a || !c || !b) return false;
    memcpy(backup, sta, sizeof(sta));
    while (b)
    {
        int z = b % 10;
        if (!z || backup[z]) return false;
        backup[z] = true;
        b /= 10;
    }
    for (int j = 1; j <= 9; j++)
    {
        if (!backup[j])
        {
            return false;
        }
    }
    return true;
}
void dfs_c(int u, int a, int c)  //枚举c
{
    if (u > 9) return;
    if (check(a, c))
    {
        ans++;
    }
    for (int i = 1; i <= 9; i++)
    {
        if (!sta[i])
        {
            sta[i] = true;
            dfs_c(u + 1, a, c * 10 + i);
            sta[i] = false;
        }
    }
}
void dfs_a(int u, int a)  //枚举a
{
    if (a >= n) return;
    if (a) dfs_c(u, a, 0);
    for (int i = 1; i <= 9; i++)
    {
        if (!sta[i])
        {
            sta[i] = true;
            dfs_a(u + 1, a * 10 + i);
            sta[i] = false;
        }
    }
}
int main()
{
    scanf("%d", &n);
    dfs_a(0, 0);
    cout << ans << endl;
    return 0;
}

image.gif


目录
相关文章
|
8天前
|
人工智能 运维 安全
|
6天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
631 22
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
13天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1027 110
人工智能 数据可视化 数据挖掘
226 0