• C语言I博客作业03


    这个作业属于哪个课程 https://home.cnblogs.com/u/Qutongxue/relation/schoolclasses
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-3/homework/11454
    这个作业的目标 作业后希望能熟悉循环结构。
    学号 20209020

    1.PTA实验作业

    1.1本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

    1.1.1实验代码截图

    1.1.2数据处理

    用了i,sum,item,flag四个变量。i为循环变量,表示循环的次数,变量sum存放累加和,循环用类for语句表示如下:for (i=1;i<=n; i++){
    sum=sum+第i项;}用变量item表示第i项,item和sum都定义为浮点型变量。符号交替变化用变量flag表示每一项的符号。

    1.1.3PTA提交列表及说明

    一开始没有注意到题目要求小数点后三位导致错误。

    对于for语句理解不清楚。

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

    1.2.1实验代码截图

    1.2.2数据处理

    用了浮点型sum,num1num2,z。使用了循环结构。

    1.2.3PTA提交列表及说明

    没看清题目导致功亏一篑需要重来一遍。没有发现浮点型。

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

    1.3.1实验代码截图

    1.3.2数据处理

    用了整数型N,浮点型sum。
    使用了循环结构。

    1.3.3PTA提交列表及说明

    没注意题目要求保留小数点几位。对语句不熟练导致错了发现不了。

    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.a==b.a&&a.id<b.id);

    }

    int qmod(int a,int b,int c)

    {

    int res=1;

    while(b)

    {

    if(b&1)

    res=((LL)res*a)%c;

    a=((LL)a*a)%c;

    b>>=1;

    }

    return res;

    }

    int main()

    {

    while(scanf("%d%d%d",&p,&b,&n)!=EOF){

    int m=sqrt(p*1.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 ",ans);

    }

    }

    3阅读优秀代码我学到了if语句,for语句,还有一些我看不懂的语句,虽然现在看不懂,但我一定会继续学习努力看懂。里面的优点很多,例如:

    1,巧妙的应用了循环结构。
    2,include用了很多,所代表的含义不一样让代码很有内容。
    3,熟练编程的语句。
    在里面我可以学到:
    1,多用灵活的用语句。
    2,循环结构。
    3,判断语句清晰认识。

    3.学习总结

    3.1学习进度条

    3.2累计代码行和博客字数!


    3.3学习感悟

    通过一周的学习我有以下感悟:

    1.书里面的知识点一定要认真看。
    2.老师上课一定要好好听。
    3.作业要反复研究,理解每个变量的意思,熟悉语句不然编程真的很难正确。

  • 相关阅读:
    cuda、cudnn环境配置
    1.python的 a,b=b,a+b 和 a=b b=a+b 的区别
    例子:循环语句--打印一个菱形
    7.python基础语法--format()函数
    例子:循环语句--九九乘法表
    例子:循环语句--输入N个整数,判断最大值,最小值,和,平均值。
    例子:循环语句--素数问题
    例子:循环语句--打印一个边长为n的正方形。
    例子:循环语句--给定一个不超过5位的正整数,判断该数的位数,依次打印出个位、十位、百位、千位、万位的数字。
    6.python基础语法--循环结构
  • 原文地址:https://www.cnblogs.com/Qutongxue/p/13943334.html
Copyright © 2020-2023  润新知