水了十道题,打算以这种方式进行,我的代码&其他人的代码方式呈现
超级玛丽问题
#include<stdio.h>
int main()
{
printf(" ********\n");
printf(" ************\n");
printf(" ####....#.\n");
printf(" #..###.....##....\n");
printf(" ###.......###### ### ###\n");
printf(" ........... #...# #...#\n");
printf(" ##*####### #.#.# #.#.#\n");
printf(" ####*******###### #.#.# #.#.#\n");
printf(" ...#***.****.*###.... #...# #...#\n");
printf(" ....**********##..... ### ###\n");
printf(" ....**** *****....\n");
printf(" #### ####\n");
printf(" ###### ######\n");
printf("##############################################################\n");
printf("#...#......#.##...#......#.##...#......#.##------------------#\n");
printf("###########################################------------------#\n");
printf("#..#....#....##..#....#....##..#....#....#####################\n");
printf("########################################## #----------#\n");
printf("#.....#......##.....#......##.....#......# #----------#\n");
printf("########################################## #----------#\n");
printf("#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n");
printf("########################################## ############\n");
return 0;
}
我的代码,最最简单的一道水题 不说了
A+B Problem
看题 还是水题,,有点不想写 但还是写上吧
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int a,b;
cin >> a >> b;
cout << a+b;
return 0;
}
这里的csdio就是c里面的<stdio.h> orz..
小玉买文具
这道题的思路刚开始是统一单位,再进行计算,因为钱财问题差多少钱人家都不卖你,所以我这里面直接取int类型 就是笔的个数,我的代码如下
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d",(10*a+b)/19);
return 0;
}
其他人的代码和我思路完全一样,所以不放了。
小鱼游泳
我的思路超级暴力,先全转化分钟数,然后除以60 因为类型原因 保留整数的小时,再将这个小时乘以60分钟,再拿分钟减 我的代码如下
#include<stdio.h>
int main()
{
int a,b,c,d,e,f;
scanf("%d %d %d %d",&a,&b,&c,&d);
e=((c*60+d-(a*60+b)))/60;
f=((c*60+d-(a*60+b)))-e*60;
printf("%d %d",e,f);
return 0;
}
看了看其他人的代码
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
int x=c-a,y=d-b;
if(y<0){x--;y+=60;}
cout<<x<<" "<<y;
return 0;
}
妙啊 直接拿分钟相减 如果小于0 小时进位,这个思路非常不错,非常值得学习
## 小玉家的电费 ##
分支结构,很容易理解和写 我就直接写下来了
#include<stdio.h>
int main()
{
int a;
double b;
scanf("%d",&a);
if(a<=150)
{
b=a*0.4463;
}
if(a>150&&a<=400)
{
b=(a-150)*0.4663+150*0.4463;
}
if(a>400)
{
b=(a-400)*0.5663+250*0.4663+150*0.4463;
}
printf("%.1lf",b);
return 0;
}
看了看别人的代码,有一个数组的让我眼前一亮 有点意思
#include <iostream>
using namespace std;
double cost[10005];//代表第i度电的花费
int a;
double b;
int main()
{
int i;
cin>>a;
for(i=1;i<=150;i++)
cost[i]=0.4463;
for(i=151;i<=400;i++)
cost[i]=0.4663;
for(i=401;i<=10000;i++)
cost[i]=0.5663;
for(i=1;i<=a;i++)
b+=cost[i];
b=int((b*10)+0.5)/10.0;
cout<<b<<endl;
return 0;
}
很容易理解看懂 我看完觉得思路很不错 就写下来了
不高兴的津津
看了眼题目,一开始没思路,后来发现是没看懂题目orz 一定要好好看题目,首先想到肯定要键入7天的数据 并且满足的条件是>8小时并且7天内是最高的 设a 和b 分别是在学校和在家的小时 每一次循环找出最大的小时赋给max 让他和天数比较,每一次循环都要用一个num表示天数 so 我的代码如下
#include<stdio.h>
int main()
{
int a,b,num=0,max=0;
for(int i=0;i<7;i++)
{
scanf("%d %d",&a,&b);
if(a+b>max&&a+b>8)
{
num=i+1;
max=a+b;
}
}
printf("%d",num);
return 0;
看到别人的代码
#include <iostream>
using namespace std;
int main()
{
int t1,t2;
int maxf=0,t=0;//最大量,最大的天数
int now=0;//记录现在是哪天
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cin>>t1>>t2;
now++;
if(t1+t2>maxf) maxf=t1+t2,t=now;
cout<<t;
return 0;
}
思路一样 他的好暴力啊,不断更新日期不断进行比较
津津的储蓄问题
我看到这道题想了蛮久的才有思路 我打算分两种钱 手里的和给妈妈的,最后将钱相加 逢100给妈妈 然后每个月单独算钱是否不够,不够输出月份的负数 直接return 0即可 我的代码如下
#include<stdio.h>
int main()
{
int yusuan,s=0,m=0;
for(int i=1;i<=12;i++)
{
scanf("%d",&yusuan);
s=s+(300-yusuan);
if(s<0)
{
printf("-%d",i );
return 0;
}
else
{
m+=s/100;
s%=100;
}
}
printf("%d",120*m+s);
return 0;
}
翻了翻其他人的代码 我挺喜欢旗帜倒下这个的,给大家看一下
#include<iostream>
using namespace std;
int money,cost,mama,flag=1,monthofdeath; //money代表在津津手里的钱,cost代表花费的钱,mama代表在妈妈手里的100元的张数,flag=1代表尚未透支,monthofdeath代表死亡月份
int main ()
{
for(int i=1;i<=12;i++)
{
money+=300; //每个月津津手里的钱都会增加300
cin>>cost; //输入这个月的花销
money-=cost; // 津津手里的钱减去这个月的花销等于剩余的钱
if(money<0) //若剩余的钱小于0,
{
flag=0; //旗帜倒下,即已经透支
monthofdeath=i; //输出死亡月份
break; //终止循环
}
mama+=money/100; //剩余的钱整除100即为在妈妈手里的100元的张数
money%=100; //用100去模剩余的钱即为月底幸存的钱
}
if(flag==1) //若旗帜未倒下,即坚持到年底还没有透支
{
money+=mama*120; //剩余的钱
cout<<money;
}
else
{
cout<<-monthofdeath;
}
return 0;
}
说实话 和我的思路完全一样 只不过他这个旗帜倒下我很喜欢 我们ctfer都喜欢flag!
买铅笔
这道题很容易,分别算钱数然后比较即可,我的思路是数组存放,然后排序寻找 可惜的是总有wa,后来经过其他人提醒才知道自己的排序出了问题,修改之后的代码
#include<stdio.h>
int main()
{
int m,n,s,cost[10],t;
scanf("%d",&n);
for(int i=0;i<3;i++)
{
scanf("%d %d",&m,&s);
if(n%m==0)
{
cost[i]=(n/m)*s;
}
else
{
cost[i]=((n/m)+1)*s;
}
}
for(int i=1;i>=0;i--)
{
if(cost[i]>cost[i+1])
{
t=cost[i];
cost[i]=cost[i+1];
cost[i+1]=t;
}
}
printf("%d",cost[0]);
return 0;
}
三连击
看了眼题目 一开始思路全无,后来得到提示 123456789这几个数字的乘积和他们的和是固定的,茅塞顿开,写下代码
#include<stdio.h>
int main()
{
int a,b,c;
for(a=123;a<=333;a++)
{
b=a*2;
c=a*3;
if((a/100)+(a/10%10)+(a%10)+(b/100)+(b/10%10)+(b%10)+(c/100)+(c/10%10)+(c%10)==1+2+3+4+5+6+7+8+9&&(a/100)*(a/10%10)*(a%10)*(b/100)*(b/10%10)*(b%10)*(c/100)*(c/10%10)*(c%10)==362880)
printf("%d %d %d\n",a,b,c);
}
return 0;
}
关键点在于1:2:3
其他师傅的思路大同小异
级数和
这种循环体还是蛮简单的 我的思路是sum作为和 判断条件是小于等于输入的k 然后自加一个变量i sum+=1.0/i来判断 加了几个i 这个"n"就是几 我的代码如下
#include<stdio.h>
int main()
{
int i=0,k;
scanf("%d",&k);
for(double sum=0;sum<=k;i++,sum+=1.0/i);
printf("%d",i);
}
看了其他师傅的递归做法
#include<cstdio>
using namespace std;
double search(double,double);
double n,t=1;
double print(double);
int main()
{
cin>>n;
search(n,0);//搜索模块。
}
double search(double x,double sum)//下面就是调用的深搜模块。
{
sum=sum+1/t;
t++;
if(sum>n) print(t);//调到输出的子程序
else return search(x,sum);//深搜
}
double print(double q)
{
cout<<q-1;
return 0;
}
总结
练习 刷题 题目比较简单,加油
0 条评论