本文主要是介绍关于哥俩好的数字这件事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
哥俩好啊哥俩好,好了将近三个小时,WA了14次,结果没好出来😡😡
啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!
这不是分界线*******************************************************************
一开始以为有规律,找了好长时间的规律
这就是一个枚举,先做一个预处理,把数位和相同的数都存起来,然后在这些数组里找个数>=n并且和最小的
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
const int maxn = 1e6 + 6;
const long long INF = 0x3f3f3f3f3f3f3f3f;
typedef long long ll;vector<ll>num[1000];ll solve(ll x) {//求数位和ll tmp = x;ll res = 0;while (tmp) {res += tmp % 10;tmp /= 10;}return res;
}int main() {ll n;cin >> n;ll ans = INF;for (int i = 1;i <= maxn;i++) {ll tmp = solve(i);num[tmp].push_back(i);//数位和相同的数压到同一个vector中}for (int i = 1;i < 1000;i++) {if (num[i].size() >= n) {//如果找到了满足条件的数组ll sum = 0;for (int j = 0;j < n;j++) {sum += num[i][j];//求和}ans = min(ans, sum);//比比谁更小~~~}}cout << ans << endl;return 0;
}
这篇关于关于哥俩好的数字这件事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!