社区讨论
神奇的变量。。。求助!
P1018[NOIP 2000 提高组] 乘积最大参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m3ryxqho
- 此快照首次捕获于
- 2024/11/22 07:53 去年
- 此快照最后确认于
- 2025/11/04 14:13 4 个月前
CPP
CPP
#include <iostream>
using namespace std;
unsigned long long n, k, a[45], maxx = -1, mul;
void dfs(unsigned long long x, unsigned long long ans, unsigned long long last)
{
if (x == k)
{
mul = 0;
for (unsigned long long j = last + 1;j < n;j++)
{
mul += a[j];
mul *= 10;
}
mul += a[n];
maxx = max(maxx, mul * ans);
return ;
}
for (unsigned long long i = last + 1;i < n - k + x;i++)
{
mul = 0;
for (unsigned long long j = last + 1;j < i;j++)
{
mul += a[j];
mul *= 10;
}
mul += a[i];
dfs(x + 1, ans * mul, i);
}
}
int main()
{
cin >> n >> k;
for (unsigned long long i = 1;i <= n;i++)
{
char c;
cin >> c;
a[i] = c - '0';
}
dfs(0, 1, 0);
cout << maxx;
return 0;
}
CPP
#include <iostream>
using namespace std;
long long n, k, a[45], maxx = -1, mul;
void dfs(long long x, long long ans, long long last)
{
if (x == k)
{
mul = 0;
for (int j = last + 1;j < n;j++)
{
mul += a[j];
mul *= 10;
}
mul += a[n];
maxx = max(maxx, mul * ans);
return ;
}
for (int i = last + 1;i < n - k + x;i++)
{
mul = 0;
for (int j = last + 1;j < i;j++)
{
mul += a[j];
mul *= 10;
}
mul += a[i];
dfs(x + 1, ans * mul, i);
}
}
int main()
{
cin >> n >> k;
for (int i = 1;i <= n;i++)
{
char c;
cin >> c;
a[i] = c - '0';
}
dfs(0, 1, 0);
cout << maxx;
return 0;
}
这份代码我是用了unsigned long long 过不了,0pts,第二份代码是我用long long 60pts,求解为什么long long能过,但是unsigned long long 过不了
回复必关
回复
共 2 条回复,欢迎继续交流。
正在加载回复...