如何建立公司网站建议和规则,永康好口碑关键词优化,自建网站软件,海外网是什么媒体Happy Number
题意 #xff1a;
开心数是由仅由2#xff0c;3#xff0c;6组成的#xff0c;问第n个开心数是哪个#xff1f; 1n1e9
题解#xff1a;
正解应该是#xff1a; 首先确定k大数有几位#xff1a; 然后就知道k大数是x位下的第k’大的 把2看成0
开心数是由仅由236组成的问第n个开心数是哪个 1n1e9
题解
正解应该是 首先确定k大数有几位 然后就知道k大数是x位下的第k’大的 把2看成03看成16看成2 问题就变成三进制数转换
我第一反应其实就是3进制只不过用236代替了012然后我就直接开始求n的三进制发现不大对我手写列举一部分236222326…22在三进制中是0023代表的是01说明这里的三进制应该是012000102101112… 00挺别扭我就想分别用123表示就是123111213212223… 第7个数是21第8个数是22分别就是7和8的三进制第9个数的三进制是30但是我们规定了是123没有0所以减一就是23.这样答案就出来了
代码
// Problem: Happy Number
// Contest: NowCoder
// URL: https://ac.nowcoder.com/acm/contest/11260/H
// Memory Limit: 1048576 MB
// Time Limit: 2000 ms
// Data:2021-08-14 12:11:25
// By Jozky#include bits/stdc.h
#include unordered_map
#define debug(a, b) printf(%s %d\n, a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pairint, int PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll 1e18;
const int INF_int 0x3f3f3f3f;
template typename T inline void read(T x)
{T f 1;x 0;char ch getchar();while (0 isdigit(ch)) {if (ch -)f -1;ch getchar();}while (0 ! isdigit(ch))x (x 1) (x 3) ch - 0, ch getchar();x* f;
}
template typename T inline void write(T x)
{if (x 0) {x ~(x - 1);putchar(-);}if (x 9)write(x / 10);putchar(x % 10 0);
}
void rd_test()
{
#ifdef ONLINE_JUDGE
#elsestartTime clock();freopen(in.txt, r, stdin);
#endif
}
void Time_test()
{
#ifdef ONLINE_JUDGE
#elseendTime clock();printf(\nRun Time:%lfs\n, (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn 6e6 9;
int vec[maxn];
int tot 0;
void solve(ll n)
{while (n) {if (n % 3 0)vec[tot] 3, n- 3;elsevec[tot] n % 3;n/ 3;}for (int i tot; i 1; i--) {if (vec[i] 1)printf(%d, 2);if (vec[i] 2)printf(%d, 3);if (vec[i] 3)printf(%d, 6);}
}
int main()
{//rd_test();ll n;cin n;solve(n);return 0;//Time_test();
}