题库错题簿51—60
来源:互联网 发布:filco 圣手二代 mac 编辑:程序博客网 时间:2024/05/17 02:16
52.兔子总数问题
int main()
{int x,i,a[51];
cin>>x;
a[1]=1;
a[2]=2;
for(i=3;i<=50;i++)
{
a[i]=a[i-2]+a[i-1];
}
cout<<a[x];
return 0;
}
数组类型从int改为long long就过了,不想说话= =
53.连乘取余问题
int main()
{
int x,y;
long long s=1;
cin>>x>>y;
for(int i=1;i<=x;i++)
{
s=s*2011;
}
cout<<s%(10*y);
return 0;
}
原因很简单,虽然定义成long long,但s还是炸了(毕竟是连乘,还是个那么大的数)= =
为了不让它炸掉,只能边乘边对保留位数取余,反正结果只保留后几位,你先取余后取余对结果没影响
这是修改后的程序:
int main()
{
int x,y,n;
long long s=1,m=1;
cin>>x>>y;
for(int j=1;j<=y;j++)
{
m=m*10;//m为保留的位数
}
for(int i=1;i<=x;i++)
{
s=s*2011%m;//s边乘边取余,防止炸掉= =
}
if(s*10/m!=0)cout<<s;//判断取余后第一位是否是0,不是就正常输出
else //例如:取后三位,m=1000,后三位乘下来s=021,s*10/m=0210/1000=0,else里的语句就是把取余中的0也输出(无论多少个0)
{
n=m/s;m整除s,看看取余的几位里有多少0(例如,m/s=1000/021=10,一个0;=100就是两个0;=1000就是三个0,以此类推)
for(int i=1;n>1;i++)
{
n=n/10;
cout<<0;//有多少0输出多少
}
cout<<s;
}
return 0;
}
55.韩信点兵
int main()
{
int a,b,c;
cin>>a>>b>>c;
for(int i=1;i<=1000;i++)
{
if(i%3==a&&i%5==b&&i%7==c)
{
cout<<i;
break;
}
}
return 0;
}
还是不看题目的锅= =
感觉自己莫不是个傻子吧= =
int i;
if(i>=10&&i%3==a&&i%5==b&&i%7==c)
{
cout<<i;
break;
}
if(i<10||i>100)cout<<"No answer";
58.不高兴的津津
int main()
{
int a[2][7],b[7],s=0,k=0,l;
for(int i=0;i<2;i++)//错误,先遍历第一列而不是第一行
for(int j=0;j<7;j++)
{
cin>>a[i][j];
}
for(int j=0;j<7;j++)
{
for(int i=0;i<2;i++)
{
s=s+a[i][j];
}
if(s>8)b[k++]=s;
s=0;
}
for(int l=0;l<k;l++)
{
s=b[0];
if(s<b[l])
{
s=b[l];
}
}
cout<<a[l][1];//错误,不是输出具体节数,是输出第几天~(应该是l不是a[l])
return 0;
}
这道题错误点还挺多的,直接上ace程序比对说明:
int main()
{
int a[7][2],b[10],s=0,k=1,m=0,n=0;
for(int i=1;i<=7;i++)//二维数组理解不到位,行列弄反了word妈
for(int j=1;j<=2;j++)
{
cin>>a[i][j];
}
for(int i=1;i<=7;i++)
{
for(int j=1;j<=2;j++)
{
s=s+a[i][j];
}
b[k++]=s;//b数组存每天上课总节数
s=0;
}
n=b[1];
for(k=1;k<=7;k++)
{
if(n<b[k])
{
n=b[k]; //n存放b数组中最大的那个数
}
}
for(k=1;k<=7;k++)
{
if(n==b[k])break;//遍历b数组,遇到第一个最大值就停下
}
m=k;
if(n>8)cout<<m;//如果第一个最大值>8就输出
else cout<<0;
return 0;
}
59.津津的零花钱(津津怎么这么多事= =)
虽然这道题一开始错了,但问题不大,我就不放源程序了
第一次没过的原因是数组开小了,例如说58(上道题)我定义的是a[7][2],但如果for(int i=1;i<=7;i++)for(int j=1;j<=2;j++),就要开大一个(for循环如果从1开始应该开a[8][3])
但是58是从1开始,我开的a[7][2]反而是ace了啊~
啊啊啊啊不知道,以后还是开大一个好了~
- 题库错题簿51—60
- 题库错题簿1—10
- 题库错题簿11—30
- 题库错题簿31—50
- 题库
- 题库
- 题库
- 题库
- 题库
- 题库
- 题库
- 题库
- LeetCode题库——TwoSum
- LeetCode题库——AddTwoNumbers
- LeetCode题库——LongestSubstringWithoutRepeatingCharacters
- SCJP认证复习——经典题库
- ACM北大题库——食物链
- NOJ题库——来自Hungar
- PHP学习(6)-文件的创建、读写
- Java基本数据类型的包装类
- Reinstate Failed Primary Database into Physical Standby
- fastjson-javaBean转json时null值的显示
- 唯快不破:HTTP请求格式和响应格式
- 题库错题簿51—60
- python学习之集合
- ubuntu 常用快捷键、常用命令
- 历史版本的cuda和cuDNN
- 二维数组
- 团体程序设计天梯赛-练习集 L1-034. 点赞
- 连分数与历法
- 做数学题比统一世界更爽,你会怎么做呢?
- 利用selenium爬取Axaj和动态网页