题目描述
100
100
100 可以表示为带分数的形式:
100
=
3
+
69258
714
100 = 3 + frac{69258}{714}
100=3+71469258。
还可以表示为:
100
=
82
+
服务器托管
3546
197
100 = 82 + frac{3546}{197}
100=82+1973546。
注意特征:带分数中,数字
1
1
1 ~
9
9
9 分别出现且只出现一次(不包含
0
0
0)。
类似这样的带分数,
100
100
100 有
11
11
11 种表示法。
输入格式
从标准输入读入一个正整数
N
(
N
N(N106)。
输出格式
程序输出数字
N
N
N 用数码
1
服务器托管
1
1 ~
9
9
9 不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
样例 #1
样例输入 #1
100
样例输出 #1
11
样例 #2
样例输入 #2
105
样例输出 #2
6
提示
原题时限 3 秒, 64M。蓝桥杯 2013 年第四届省赛
代码
int main() {
vectorint> nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
long long n;cin>>n;
long long res = 0;
// 使用 next_permutation 生成全排列
do {
for (int i = 0; i 6; i++) { // 第一个分界点
for (int j = i + 1; j 8; j++) // 第二个分界点
{
// 计算第一个数
long long num1 = 0;
for (int k = 0; k i; k++) {
num1 = num1 * 10 + nums[k];
}
// 计算第二个数
long long num2 = 0;
for (int k = i + 1; k j; k++) {
num2 = num2 * 10 + nums[k];
}
// 计算第三个数
long long num3 = 0;
for (int k = j + 1; k nums.size(); k++) {
num3 = num3 * 10 + nums[k];
}
// 判断是否满足条件
if (num1 + num2 / num3 == n && num2 % num3 == 0) {
res++;
// cout
}
}
}
} while (next_permutation(nums.begin(), nums.end()));
cout res endl;
return 0;
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
ROCT-Thunk-Interface是一个用于在ROCm软件堆栈中提供设备无关性的层。它是ROCm的一部分,允许不同的硬件平台(如AMD GPU和Intel CPU)使用相同的API进行计算。 要安装ROCT-Thunk-Interface,首先需要创建一…