赞
踩
1.标题:啤酒和饮料
啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。
注意:答案是一个整数。请通过浏览器提交答案。
不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。
答案:11
代码实现:
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int x,y;
- for(x=1;x<35;x++)
- {
- for(y=x+1;1.9*y<=(82.3-2.3*x);y++)
- {
- if(1.9*y+2.3*x==82.3)
- cout << x;
- }
- }
- return 0;
- }
2.标题:切面条
一根高筋拉面,中间切一刀,可以得到2根面条。
如果先对折1次,中间切一刀,可以得到3根面条。
如果连续对折2次,中间切一刀,可以得到5根面条。
那么,连续对折10次,中间切一刀,会得到多少面条呢?
答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。
答案:1025
代码实现:
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- int num=2;
- for(int i=1;i<=10;i++){
- num = num*2-1;
- }
- cout<<num;
- return 0;
- }
- //每次折一下相当于层数每次乘2, 跟2的次方有关, 观察可知, 折n次, 得到2^n + 1 条面条
3.标题:李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。
答案:14
代码实现:
- #include<bits/stdc++.h>
- using namespace std;
- int main(){
- int cnt=0;
- char f[15];
- for(int i=0;i<5;i++){
- f[i]='a';
- }
- for(int i=5;i<15;i++){
- f[i]='b';
- }
- do{
- int n=2;
- for(int i=0;i<15;i++){
- if(f[i]=='a'){
- n=n*2;
- }
- else if(f[i]=='b'){
- n=n-1;
- }
- if(n<0){
- break;
- }
- }
- if(n==0){
- cnt++;
- }
- }while(next_permutation(f,f+14));
- cout<<cnt<<endl;
- return 0;
- }
4.标题:史丰收速算
史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!
速算的核心基础是: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请分析程序流程,填写划线部分缺少的代码。
//计算个位
int ge_wei(int a)
{
if(a % 2 == 0)
return (a * 2) % 10;
else
return (a * 2 + 5) % 10;
}//计算进位
int jin_wei(char* p)
{
char* level[] = {
"142857",
"285714",
"428571",
"571428",
"714285",
"857142"
};
char buf[7];
buf[6] = '\0';
strncpy(buf,p,6);
int i;
for(i=5; i>=0; i--){
int r = strcmp(level[i], buf);
if(r<0) return i+1;
while(r==0){
p += 6;
strncpy(buf,p,6);
r = strcmp(level[i], buf);
if(r<0) return i+1;
______________________________; //填空
}
}
return 0;
}//多位数乘以7
void f(char* s)
{
int head = jin_wei(s);
if(head > 0) printf("%d", head);
char* p = s;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。