【PAT】乙级练习题

PAT乙级练习

文章目录

  • PAT乙级练习
    • 1001
    • 1002
    • 1003
    • 1004
    • 1005
    • 1006
    • 1007
    • 1008

题号题目
1001采花生
1002NowCoder数列
1003养兔子
1004客似云来
1005斐波那契凤尾
1006星际密码
1007母牛的故事
1008童年生活二三事
1009蜜蜂寻路
1010骨牌铺方格
1011NowCoder小定律
1012分数运算
1013分解因数
1014因子个数
1015skew数
1016一的个数
1017外星人的语言
1018数位和
1019进制回文数
1020发邮件
1021年会抽奖
1022有假币
1023考新郎
1024蟠桃记
1025三角形
1026圆周率
1027送外卖
1028乒乓球筐
1029不吉利的日期
1030最难的问题
1031直方图
1032选大王
1033害死人不偿命的(3n+1)猜想 (15)
1034写出这个数 (20)
10351003. 我要通过!(20)
1036成绩排名 (20)
1037继续(3n+1)猜想 (25)
1038换个格式输出整数 (15)
1039素数对猜想 (20)
1040数组元素循环右移问题 (20)
1041说反话 (20)
1042一元多项式求导 (25)

1001

1002

#include
int main() {int n;while(scanf("%d",&n)!=EOF) {if(n%4==2)printf("Yes\n");elseprintf("No\n");}return 0;
}

1003

1004

  • C++
#include
using namespace std;
long long a[81]={0};
int main() {int m,n;a[0]=a[1]=1;for(int i=2;i<81;i++) {a[i]=a[i-1]+a[i-2];}while(cin>>m>>n) {long long sum=0;for(int i=m-1;i<n;i++) {sum+=a[i];}cout<<sum<<endl;}return 0;
}
  • Python
def main():while True:try:n,m=map(int,input().split())a=[1,1]for i in range(2,m+1):a.append(a[-1]+a[-2])s=sum(a[n-1:m])print(s)except:break
if '__name__'==main():main()

1005

def main():a=[1,1]for i in range(2,100001):a.append((a[-1]+a[-2])%1000000)while True:try:n=int(input())if n<37:print(a[n]%1000000)else:print('%.6d' % (a[n]%1000000))except:break
if '__name__'==main():main()

1006

  • 思考
    • n=1时,矩阵为:
      |1 1|
      |1 0|
      所以左上角数字为1
    • n=2时,矩阵为
      |1 1| * |1 1| => |2 1|
      |1 0| |1 0| |1 1|
      所以左上角数字为2

      n的取值:1 2 3 4 5 6 …
      左上角值:1 2 3 5 8 13 …
      斐波那契数列。。。
  • 代码
#include
using namespace std;
int main() {int n,x,f[10001];f[0]=1;f[1]=1;for(int i=2;i<10001;i++)f[i]=(f[i-1]%10000+f[i-2]%10000)%10000;while(~scanf("%d",&n)) {while(n--) {cin>>x;printf("%04d",f[x]);}cout<<endl;}return 0;
}

1007

  • 思考

假设现在是第n年,有m头牛,求n+1年?n+1年一定会有第n年的m头牛,关键的为题是有多少头牛会生小牛,每头小母牛从第四个年头开始,每年年初也生一头小母牛,因此会n-3年所有牛都会生小牛。因此:

第n+1年=第n-1年+第n-3年

  • 代码
#include
using namespace std;
int main() {int a[56],n;a[0]=1;a[1]=2;a[2]=3;a[3]=4;for(int i=4;i<56;i++) {a[i]=a[i-1]+a[i-3];}while(~scanf("%d",&n)) {cout<<a[n-1];cout<<endl;}return 0;
} 

1008

  • 思考

这是一个斐波拉契。

  • 代码
#include
using namespace std;
int main() {long long a[91];int n;a[0]=1;a[1]=2;for(int i=2;i<91;i++) {a[i]=a[i-1]+a[i-2];}while(~scanf("%d",&n)) {cout<<a[n-1];cout<<endl;}return 0;
} 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部