在我的博客食用效果更佳!https://www.cbw2007.tk/articles/luogu-P1618-sol/,文章最初发表于2018年5月22日。更多见在不同的网站浏览本站内容
其实这题挺简单,没做过的先去试试【P1008】三连击
分析
思路与P1008相同。
具体思路:
一、枚举1~999的所有数为第一个数,然后分别乘 a , b , c a,b,c a,b,c。这就省去了三重循环,变为一重,在数据非常大时效果更明显。(其实无需循环至999~~,只是懒得算了而已~~ )
二、定义一个数组,记录1~9的使用量。
代码
1.0版
#include<iostream>
#include<cstring>
using namespace std;
int jishu(int n)//统计出现了多少数
{
int m[10],s=0;
memset(m,0,sizeof(m));//初始化数组
while (n!=0)//剥离数字并记录
{
m[n%10]++;
n/=10;
}
for (int j=0; j<=9; j++)//记录出现了多少种数字
if (m[j]>=1) s++;
return s;
}
int main()
{
int a,b,c;

本文详细解析了洛谷P1618【三连击(升级版)】的解题过程,从1.0版到3.0版逐步优化代码,分析了问题的关键在于避免枚举时的无效情况,并处理多位数的情况,最终实现AC。
】&spm=1001.2101.3001.5002&articleId=103651326&d=1&t=3&u=be82748dced640ad9ee728bcdfe4df81)
496

被折叠的 条评论
为什么被折叠?



