话说这次把最后一题想难了搞得没有一次性 AK A K 。。。
话说倒数第二题用 gets g e t s 会 wa w a ,果断用了 scanf s c a n f 就 A A 了。。。
https://www.luogu.org/contest/show?tid=7310
https://www.luogu.org/problemnew/show/T28139
给定一些固定数值的货币,现在有 N N 元,在尽量用面值高的货币的情况下,每种货币会用多少张?
一个裸的贪心+模拟,一些基础的运算就可以了
先依次除去大的纸币的面值,在用余数继续除,计算的结果即为纸币的张数
(当然也能暴力模拟)
#include
using namespace std;long long n;
int main()
{
scanf("%lld",&n);//输入
printf("%lld\n%lld\n%lld\n%lld\n%lld\n%lld",n/100,(n%100)/50,((n%100)%50)/20,(((n%100)%50)%20)/10,((((n%100)%50)%20)%10)/5,((((n%100)%50)%20)%10)%5);//输出
}
https://www.luogu.org/problemnew/show/T29092
给定一个长度为 n n 的二进制数,将其转换为10进制
朴素的想法是直接用一个数组,但是这样空间复杂度较高,其实可以用两个变量代替,然后边输入边做
#include
using namespace std;char c;long long s,a=1;int n;
int main()
{
scanf("%d\n",&n);for(int i=1;i1;//求出2的n次方
while(n--)
{
c=getchar();//输入
if(c==49) s+=a;//如果是1加上去
a>>=1;//每次往右移
}
printf("%lld",s);//输出
}
https://www.luogu.org/problemnew/show/T29694
不想解释。。。
给定年薪和房价增长率,房价初始为200万元,求第几年可以买下这套房
暴力模拟
#include
using namespace std;double now;int n,k,s;
int main()
{
scanf("%d%d",&n,&k);now=200;s=n;
for(int i=1;i<=20;i++)//规定只有20年
{
if(s>=now) {printf("%d",i);return 0;}//我买的下啦!
now*=1+k/100.0;//我涨房价
s+=n;//我领年薪
}
puts("IMP0SSIBLE");//努力奋斗二十年都买不到。。。
}
https://www.luogu.org/problemnew/show/T30105
给定两个数,比较其大小
这道题的输出很诡异, YE5 Y E 5 和 N0 N 0 ,这样看还能看出来,但题目里边是这样的,YE5,N0,被坑死了。。。
然后这道题数据有点大,用数组比较就行了
#include
#include
#define prf(x) {printf(#x);putchar(10);return 0;}//输出某字符串并换行
using namespace std;char c1[1001],c2[1001];
int main()
{
scanf("%s%s",c1,c2);
if(strlen(c1)>strlen(c2)) prf(YE5);
if(strlen(c1)<strlen(c2)) prf(N0);//小学数学,谁位数多谁更大
for(int i=0;i<strlen(c1);i++) if(c1[i]>c2[i]) prf(YE5) else if(c1[i] prf(N0);//比较每一位
prf(The Same);//若完全相等
}
https://www.luogu.org/problemnew/show/T30868
在一个 n×n n × n 的矩阵中有些格子上有一些数字,输出每个数字对应占领的格子数
开一个桶,保存答案,然后直接输出
#include
using namespace std;
int a[9],n,c;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&c);
a[c]++;//存进桶
}
for(int i=1;i<9;i++) printf("%d ",a[i]);//输出
}