• C语言I博客作业03


    这个作业属于哪个课程 班级链接
    这个作业要求在哪里 作业要求链接
    这个作业的目标 对新学的for循环语句进行练习,加强我们对代码的兴趣,对这段时间的学习进行一个总结
    学号 20209014

    1. PTA实验作业

    1.1 求简单交错序列前N项和

    题目内容描述:本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

    1.1.1实验代码截图

    1.1.2数据处理

    数据表达:使用了i,f,N,sum四个变量,sum用于储存结果,N用于存储输入常量,i用于for循环结构,f用于变换符号。N,f使用了整型浮点型;i,sum使用了浮点型
    数据处理:使用了for循环结构,与符号变换的方法,表达式为
    for(i=1;i<=N;i++){
    sum=sum+f/(3*i-2);
    f=-f;
    }

    1.1.3 PTA提交列表及说明


    该题目出现了很严重的逻辑问题,我开始是使i直接自增3,发现这会导致一些数据直接无法输出。因此换了一种思路后

    1.2 求分数序列前N项和

    题目内容描述:本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

    1.2.1 实验代码截图

    1.2.2 数据处理

    数据表达:该题使用了i,N,a,b,c,sum六个变量,其中i和N为整型,a,b,c,sum为浮点型,sum用于储存结果,N用于存储输入常量,a,b,c,i用于for循环结构.
    数据处理:使用了for循环结构,两个变量的替换需要用三个符号来储存,表达式为
    for(i=1;i<=N;i++){
    sum=sum+a/b;
    c=a;
    a=a+b;
    b=c;
    }

    1.2.3 PTA提交列表及说明


    在第一个题目的训练下,这个题还是迅速掌握了,但是在写for循环时,括号中加上了"",导致编译错误,过后,迅速调整

    1.3求平方根序列前N项和

    题目内容描述:本题要求编写程序,计算平方根序列√​1+√2+√3+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。

    1.3.1 实验代码截图

    1.3.2 数据处理

    数据表达:使用i,n,sum三个变量,i用于循环结构,sum用于储存结果,n用于存储输入常量,其中,n和i为整型,sum为浮点型。
    数据处理:一个简单的for循环,用到到数学函数。

    1.3.3 PTA提交列表及说明


    这个完成得很轻松。

    2.阅读代码

    include

    include

    include

    include

    include

    include

    include

    include

    include

    include<time.h>

    include

    define cl(a,b) memset(a,b,sizeof(a))

    define max(x,y) ((x)>(y)?(x):(y))

    define min(x,y) ((x)<(y)?(x):(y))

    define REP(i,n) for(int i=0;i<n;++i)

    define REP1(i,a,b) for(int i=a;i<=b;++i)

    define REP2(i,a,b) for(int i=a;i>=b;--i)

    define MP make_pair

    define LL long long

    define ULL unsigned long long

    define X first

    define Y second

    define MAXN 100050

    using namespace std;
    int p,b,n;
    struct node
    {
    int a,id;
    }q[MAXN];
    bool cmp(node a,node b)
    {
    return a.a<b.a||(a.ab.a&&a.id<b.id);
    }
    int qmod(int a,int b,int c)
    {
    int res=1;
    while(b)
    {
    if(b&1)
    res=((LL)resa)%c;
    a=((LL)a
    a)%c;
    b>>=1;
    }
    return res;
    }
    int main()
    {
    while(scanf("%d%d%d",&p,&b,&n)!=EOF){
    int m=sqrt(p1.0);
    while(m
    m<p)m++;
    int res=1;
    int tail=0;
    int a=qmod(b,m,p);
    for(int i=0;i<=m;++i)
    {
    q[tail].id=i;
    q[tail++].a=res;
    res=((LL)res*b)%p;
    }
    sort(q,q+tail,cmp);
    int h=0;
    for(int i=0;i<tail;++i)
    {
    if(i
    0||q[i].a!=q[i-1].a)
    {
    q[h++]=q[i];
    }
    }

        int flag=0,ans;
        res=n;
        int ra=qmod(a,p-2,p);
        for(int i=0;i<=m;++i)
        {
            int l=0,r=h-1;
            while(r-l>1)
            {
                int mid=(l+r)>>1;
                if(q[mid].a>res)r=mid;
                else l=mid;
            }
            int pos=-1;
            if(q[l].a==res)pos=l;
            if(q[r].a==res)pos=r;
            if(pos!=-1){
                ans=i*m+q[pos].id;
                flag=1;
                break;
            }
            res=((LL)res*ra)%p;
        }
        if(flag==0)puts("no solution");
        else
            printf("%d\n",ans);
    }
    

    }
    感想:1. 此份代码思路清晰,如需要用到的函数要一次性想好,需要的思维跨度非常大。
    2. 这份代码使用了许多的for循环与if语句。
    3.虽然看不懂这些代码,但发现自己的许多不足,在这条路还任重道远的。

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第8周/10.19~10.25 12h 280 预习了一下课本,了解代码的样子,并学习了基本代码
    第9周/10.26~11.1 15h 300 了解了基本的常量与变量,与数据类型 对于细节有许多不到位,还有对许多知识完全不了解
    第10周/11.2~11.6 20h 350 if语句和for循环语句的运用 就像今天的作业一样,看不懂复杂代码,只能在简单中窥探

    3.2 累积代码行和博客字数

    3.3 学习感悟

    总结:对于代码的学习还是太放松了,需要多花点时间在代码上,并且也了解到思维要严谨的重要性,从今天的代码阅读上看,思维是很重要的,而且在这么大的阅读量下,需要明细许多变量,使代码阅读变得简单

  • 相关阅读:
    js 文件的操作
    js重点基础知识 以及小案例_最简单的轮播图 简单的动态表格( encodeURIComponent()编码比 encodeURI()编码)
    2阶——数据库连接池 c3p0 , druid, dbcp (其实所有的连接池都实现了dataSource接口,就可以调用getconnection方法)
    2阶——JDBC,JDBCTemplate(操作数据库)
    vue + django 批量删除
    简单的模糊搜索 Vue + django
    vue 父子组件传参简单的分页
    vue 多对多反序列化上传图片
    模型里的 抽象类 表继承
    django 多对多反序列添加
  • 原文地址:https://www.cnblogs.com/cony1/p/13942551.html
Copyright © 2020-2023  润新知