9 条题解
- 1
信息
- ID
- 18
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- 递交数
- 425
- 已通过
- 166
- 上传者
#include <iostream>
using namespace std;
int main()
{
int i, j, n, x = 0;
for (i = 1; i <= 100; i++)
{
for (j = 1; j <= 50; j++)
{
for (n = 1; n <= 20; n++)
{
if (i * 1 + j * 2 + n * 5 == 100)
x += 1;
}
}
}
cout << x << endl;
return 0;
}
#include <iostream>
using namespace std;
int main(){cout<<461;}
#include <bits/stdc++.h>
using namespace std;
int ans;
int main(){
for (int i=1;i<=100;i++){
for (int j=1;j<=50;j++){
for (int k=1;k<=20;k++){
if (k*5+j*2+i==100)ans++;
}
}
}
cout<<ans;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int sum=0;
for (int i=1;i<100;i++)
{
for (int j=1;j<50;j++)
{
for (int k=1;k<20;k++)
{
if ((i*1+j*2+k*5)==100)
{
sum+=1;
}
}
}
}
cout<<sum;
}
首先:1元=10角=100分
其次:变量i指1分的数量,在1-100之间;变量j指2分的数量,在1-50之间;变量k指5分的数量,在1-20之间。所以,暴力枚举就可以判断出总方案数。
最后:打印出方案数即可。
long long i,j,k,num=0;
for (i=1;i<=100;i++)
{
for (j=1;j<=50;j++)
{
for (k=1;k<=20;k++)
{
if (i*1+j*2+k*5==100)
{
num++;
}
}
}
}
cout<<num<<endl;
我这种方法的循环变量是指每种硬币的数量,另一种方法是指每种硬币的钱数,这里卖个关子,会的跟一条
int h,sum=0;
for (int i=5;i<=100;i+=5)
{
for (int j=2;j<=100;j+=2)
{
h=100-i-j;
if ((i+j+h==100) and (h>0))
{
sum++;
}
}
}
cout<<sum;
枚举:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int sum=0;
for (int i=1;i*5<100;i++)
{
for (int j=1;j*2<100;j++)
{
if (100-(i*5+j*2)>0)//判断不能用不等于0,会导致负数的情况也会被计算
{
sum++;
}
}
}
cout<<sum<<endl;
return 0;
}
#include <iostream> using namespace std; int main() { cout << 461; return 0; }