关注
没参加笔试,只能想到o(nnlgn)的解法。不知道最后会不会超时。想法就是先求出完整排列的次数,然后去掉不符合题意的排列次数。完整排列的想法就是把整个排列看成是一个多项式。比如
7 = a*1+b*2+c*3+d*4+e*5+f*6+g*7
求这几个未知数的所有可能情况就行了。用动态规划来求。还有很多不同的解法:比如这个博客讲得非常细致。blog link,还有知乎大佬用公式直接求的.
zhihu link
去掉不符合题意的答案,只要做
int tmp = dp[i][i]-1,tmp2 = i/2;
for (int t = 1; t <= tmp2;t++)
if (i%t == 0)
tmp--;
因为题意可以看出,分解出来各项都相等的都不能算。所以只要去掉这些项就行了。
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <unordered_map>
#include <vector>
#include <math.h>
#include <set>
using namespace std;
int main()
{
int dp[101][101];
for (int i = 0; i < 100;i++)
for (int j = 0; j < 100; j++)
dp[i][j] = 0;
for (int i = 0; i < 100; i++){
dp[0][i] = 1;
dp[i][0] = 1;
dp[1][i] = 1;
}
for (int i = 2; i < 100; i++){
for (int j = 1; j < 100; j++){
for (int k = 0; k <= j; k += i){
dp[i][j] += dp[i - 1][j - k];
}
}
int tmp = dp[i][i]-1,tmp2 = i/2;
for (int t = 1; t <= tmp2;t++)
if (i%t == 0)
tmp--;
cout <<i<< ":" << tmp << endl;
}
return 0;
}
当然,我觉得最暴力的解法就是先跑一遍上面的程序,然后把得到的结果直接保存为数组。 比如这样:
int main(){
int res[100] = { 0,0,0,
1,
2,
5,
7,
13,
18,
27,
38,
54,
71,
99,
131,
172,
226,
295,
379,
488,
621,
788,
998,
1253,
1567,
1955,
2432,
3006,
3712,
4563,
5596,
6840,
8343,
10139,
12306,
14879,
17968,
21635,
26011,
31181,
37330,
44581,
53166,
63259,
75169,
89128,
105554,
124752,
147263,
173522,
204220,
239939,
281583,
329929,
386147,
451272,
526815,
614150,
715216,
831818,
966455,
1121503,
1300152,
1505493,
1741623,
2012554,
2323512,
2679687,
3087729,
3554341,
4087960,
4697203,
5392771,
6185687,
7089496,
8118258,
9289085,
10619859,
12132156,
13848648,
15796466,
18004322,
20506251,
23338467,
26543648,
30167353,
34262958,
38887669,
44108101,
49995923,
56634161,
64112355,
72533801,
82010173,
92669716,
104651415,
118114292,
133230928,
150198130,
169229869, };
int n;
cin >> n;
cout << res[n] << endl;
return 0;
}
查看原帖
点赞 2
相关推荐
点赞 评论 收藏
分享
12-15 14:25
云南大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 27届学院二本,袋鼠云->快手->腾讯wxg,25年末聊聊我的前端之路1.5W
- 2... 本科五段大厂实习,秋招五个offer,我的校招结束了7425
- 3... 适可而止吧!你就是“烂泥”5896
- 4... 大四双非水产专业上岸阿里后端(五)5699
- 5... 我的世界观,就是对抗优绩主义的武器3799
- 6... 27双非杀入字节!2758
- 7... 26届双非硕Java秋招总结1644
- 8... 日常实习-小红书后端java二面1578
- 9... 实习被“放养”零产出,该及时止损还是继续苟着?1540
- 10... 大厂工作强度从夯到拉,B站真爽1474
正在热议
更多
# 实习没人带,苟住还是跑路? #
2147次浏览 67人参与
# 工作中的卑微时刻 #
29855次浏览 190人参与
# 元旦假期你打算怎么过 #
2803次浏览 85人参与
# 过年期间可能会经历的尴尬瞬间 #
48531次浏览 313人参与
# 我们是不是被“优绩主义”绑架了? #
4396次浏览 175人参与
# 从夯到拉,评价编程语言 #
27837次浏览 148人参与
# 如何看待应届生身份? #
210771次浏览 2234人参与
# 查收我的offer竞争力报告 #
263820次浏览 1644人参与
# 多益网络工作体验 #
60204次浏览 300人参与
# 牛客2025仙途报告 #
21505次浏览 325人参与
# 机械制造面试记录 #
299898次浏览 3143人参与
# 实习心态崩了 #
96585次浏览 494人参与
# 华为工作体验 #
277234次浏览 1355人参与
# 26届秋招投递记录 #
109339次浏览 652人参与
# 实习打杂,要跑路吗 #
54332次浏览 330人参与
# 你有哪些缓解焦虑的方法? #
44779次浏览 873人参与
# 找工作,行业重要还是岗位重要? #
88307次浏览 1769人参与
# 华为池子有多大 #
154591次浏览 867人参与
# 今年你最想重开的一场面试是? #
18186次浏览 174人参与
# 参加过提前批的机械人,你们还参加秋招么 #
105349次浏览 1647人参与


查看12道真题和解析