蓝桥杯2016初赛 - 凑算式 - 全排列
题目链接
http://oj.ecustacm.cn/problem.php?id=1291
思路
答案是29。
我以为是九层循环直接暴力写……(PS:但是我发现暴力九层也是可以的,有人写,判重复的数字即可。)
原来是全排列,那也应该是,毕竟有九个不同的数。
利用题目给出的公式进行通分(通分之后得看下组成好之后是整体还是独立的数字再去进行组合,别弄错了),然后开一个数组存九个数,分别代表A-I,然后套进去公式就行。
注意:下标和数字和字母别写错了。
(全排列之前的公式有写,注意复习!)
AC代码
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<vector>
#include<string.h>
using namespace std;
#define inf 0x3f3f3f3f
int main()
{
int a[10]= {1,2,3,4,5,6,7,8,9};
//九个数 A B C D E F G H I
//下标 0 1 2 3 4 5 6 7 8
int cnt=0;
do
{
int GHI=a[6]*100+a[7]*10+a[8];
int DEF=a[3]*100+a[4]*10+a[5];
if(a[0]*a[2]*GHI+a[1]*GHI+DEF*a[2]==10*a[2]*GHI)
cnt++;
}while(next_permutation(a,a+9)); // 注意:这里一定要写分号的
cout<<cnt<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」