2021-11-25 学习的打卡学习第三天(蛇形填数,快速幂)

昨天和前天分别是2,3点睡觉的,感觉身体被掏空(ノಥ益ಥ),大数减除等等吧。

先附上快速幂的代码:

#include<stdio.h>
int main()
{
    int a,b,t=1;
    scanf("%d %d",&a,&b);//a=底数,b=次幂
    while(b)//b!=0进入循环
    {
        if(b%2==0)
        {
            b=b/2;
            a=a*a;
        }
        else
        {
            b=b-1;
            t=t*a;
        }
    }
    printf("%d",t);
}

 还刷了几道题,如下:

蛇形填数:

在 n×n 方阵里填入 1,2, ⋯,n×n,要求填成蛇形。例如 n=4 时方阵为:

10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4

输入格式

直接输入方阵的维数,即 n的值。(n≤100)

输出格式

输出结果是蛇形方阵。

Sample Input

3

Sample Output

7 8 1
6 9 2
5 4 3
#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n][n];
    int i=0,z=1,r=0,t=0;
        while(z<n*n)
    {
        for(i=t;i<n-1-t;i++)
    {
    a[i][n-1-t]=z;
    z++;
    }
    for(i=n-1-t;i>=1+t;i--)
    {
        a[n-1-t][i]=z;
        z++;
    }
    for(i=n-1-t;i>=1+t;i--)
    {
        a[i][t]=z;
        z++;
    }
    for(i=t;i<n-1-t;i++)
    {
        a[t][i]=z;
        z++;
    }
    t=t+1;
    if(z==n*n&&n%2!=0)
    {
        a[n/2][n/2]=z;
    }
    }
    for(i=0;i<n;i++)
    {
        for(r=0;r<n;r++)
        {
            printf("%d ",a[i][r]);
        }
        printf("\n");
    }
    return 0;
}

想了好久.....;

螺旋:

Spira 是一种螺旋,从 Spiral 演变过来的。废话不多说,蒜头君决定称如下的等腰直角三角形为 Spira:

1 2 3 4 5
12 13 14 6
11 15 7
10 8
9

这个是腰长为 5 的时候的样子。那么如果有其它腰长的 Spira 会是怎么样的呢?蒜头君想让你一个个画出来。

输入格式

第一行一个正整数 T(1≤T≤10),代表测试数据组数。

以下 T 行,各行就一个正整数 N(2≤N≤1000),代表三角形腰长。

输出格式

对于每个测试数据,输出相应的 Spira。每组数据之间以一个空行来间隔。

Sample Input

2
5
4

Sample Output

1 2 3 4 5
12 13 14 6
11 15 7
10 8
9

1 2 3 4
9 10 5
8 6
7
#include <stdio.h>
#define N 1001
int b[3][2]= {{0,1},{1,-1},{-1,0}};
int a[N][N];
int main()
{ int n,t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int f=1;
        int t1,t2;
        t1=0;
        t2=0;
        for(int i=0; i<n; i++)
        {
            int c=n-i;
            for(int j=0; j<c; j++)
            {
                t1+=b[i%3][0];
                t2+=b[i%3][1];
                a[t1][t2]=f++;
            }
        }
        for(int i=0; i<n; i++)
        {
            for(int j=1; j<=n-i; j++)
                if(j!=n)
                    printf("%d ",a[i][j]);
                else
                    printf("%d",a[i][j]);
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

今天学习目标没有达到啊,找机会补上吧。

先(¦3[▓▓].....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值