啤酒和饮料
题目描述:
啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。
我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
注意:答案是一个整数。请通过浏览器提交答案。
不要书写任何多余的内容-(例如:写了饮料的数量,添加说明文字等)
思路的话就从1~50遍历,如果(啤酒x2.3)+(饮料x1.9)=82.3就输出
注意:啤酒<饮料
也就是:
for(i=1;i<50;i++)
{
for(j=1;j<50;j++)
{
if(2.3*i+1.9*j==82.3)
{
printf("%d\n",i);
break;
}
但是啥也没输出
之后我将判断改了一下
if(2.3*i+1.9*j>82.250000&&2.3*i+1.9*j<82.350000&&i<j)
就得到了正确结果。完美哈哈哈
代码:
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<50;i++)
{
for(j=1;j<50;j++)
{
if(2.3*i+1.9*j>82.250000&&2.3*i+1.9*j<82.350000&&i<j)
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
答案:11
切面条
题目描述:
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。
思路:对折对折,肯定实在原来的基础上进行变化,仔细观察题目后就能发现其实后面这一次的等于前面一次的乘以2再减去1
代码
#include<stdio.h>
int main()
{
int a[15]={0},i;
a[0]=2,a[1]=3,a[2]=5;
for(i=2;i<=10;i++)
a[i]=a[i-1]*2-1;
printf("%d",a[10]);
return 0;
}
答案:1025
李白打酒
题目描述:
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
思路:要用到深搜,但我也还不太懂,,,,,,
代码:
#include<stdio.h>
int sum=0;
void dfs(int a,int b,int c)
{
if(a==0&&b==0&&c==1)
sum++;
if(a>0)
dfs(a-1,b,c*2);
if(b>0)
dfs(a,b-1,c-1);
}
int main()
{
dfs(5,9,2);
printf("%d",sum);
return 0;
}
答案:14
史丰收
速算(可跳过)
题目描述:
史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!
速算的核心基础是:1位数乘以多位数的乘法。
其中,乘以7是最复杂的,就以它为例。
因为,1/7 是个循环小数:0.142857...,如果多位数超过 142857...,就要进1
同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过 n/7,就要进n
下面的程序模拟了史丰收速算法中乘以7的运算过程。
乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。
乘以 7 的进位规律是:
满 142857... 进1,
满 285714... 进2,
满 428571... 进3,
满 571428... 进4,
满 714285... 进5,
满 857142... 进6
请分析程序流程,填写划线部分缺少的代码。
思路:这么一大串还有个锤子思路,经过我仔细的阅读,发现原来,原来啥也看不懂 原来关键是题目的代码
下面看一下题目填空代码
while(r==0){
p += 6;
strncpy(buf,p,6);
r = strcmp(level[i], buf);
if(r<0) return i+1;
_________________________; //填空
}
分析一下发现有r=0,r<0这两种情况,那么就是r>0的情况没考虑,而且前面的if有返回值i+1,那么填空部分可能是返回(i+?)
所以我大胆蒙一个答案 猜测 :return i;
对答案发现少了一个判断,太可惜了
答案:
if(r>0)
return i;
奇怪的分式
题目描述:
上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:
1/4 乘以 8/5
小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)
老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!
对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?
请写出所有不同算式的个数(包括题中举例的)。
显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。
但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!
注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。
思路:其实这个题目和13年的马虎的算式类似,可以通过暴力枚举实现,把a(第一个数的分子),b(第一个数的分母),c(第二个数的分子),d(第二个数的分母)可能的情况都枚举一次,如果满足ac/bd=(ax10+c)/(bx10+d),可能的情况就加一。
也就是:
if(((a*c*1.0)/(b*d*1.0))==(((a*10+c)*1.0)/((b*10+d)*1.0)))
sum++;
注意:两个数分子分母各不相同。
代码:
#include<stdio.h>
int main()
{
int a,b,c,d,sum=0;
float q,w,e,r;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
if(b!=a)
{
for(c=1;c<=9;c++)
{
for(d=1;d<=9;d++)
{
if(d!=c)
{
if(((a*c*1.0)/(b*d*1.0))==(((a*10+c)*1.0)/((b*10+d)*1.0)))
sum++;
}
}
}
}
}
}
printf("%d",sum);
return 0;
}
答案:14
相比13年的题,感觉难度有增大,尤其是编程题目,同时也考察了例如深搜还未学习的东西,还是得抓紧向前学,向我玩失踪大哥学习!!