新生24场

打印方阵:

题目描述

下面这样的方阵很有规律,称为蛇形方阵。例如3*3的:
1 2 3
6 5 4
7 8 9
现在给定边长,输出相应的蛇形方阵。

输入

1个整数n,表示要输出n*n的蛇形方阵,1<=n <=100。 

输出

n行,每行n个整数,空格隔开。

样例输入 Copy

4

样例输出 Copy

1 2 3 4 
8 7 6 5 
9 10 11 12 
16 15 14 13
这个题...直接暴力循环,呵呵呵呵
复制代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N=110;
int a[N][N];
int main(){
    int n;
    cin>>n;
    int t=1;
    for(int i=1;i<=n;i++)
    {
        int j=i%2==0?n:1;
        if(j==1)
            for(int j=1;j<=n;j++)
                a[i][j]=t++;
        else
            for(int j=n;j>=1;j--)
                a[i][j]=t++;
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
复制代码

倒背如流:

题目描述

黑板上老师写了一行N个正整数,老师要考同学们的倒背如流能力,让学生从右向左读这些数字,并求出他们的和。例如写了3个整数: 123 45 60 。结果是:06+54+321=381 
 

输入

第一行1个整数n, 1<=n <=100。 
第二行n个正整数,每个正整数不超过1000000。 
 

输出

一个整数。 

样例输入 Copy

3
123 45 60

样例输出 Copy

381
这个题我用了个整数反转的函数,还好
复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int re(int x)
{
    int t,m=0;
    while(x)
    {
        t=x%10;
        m=m*10+t;
        x/=10;
    }
    return m;
}
int main(){
    int n,t,sum=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>t;
        sum=sum+re(t);
    }
    cout<<sum<<endl;
    return 0;
}
复制代码

题目描述

有两个数列A和B,那些在A中出现但不在B中出现的数就称为集合A和集合B的差:A-B。例如:A={1 ,4, 5, 2, 6} ,B={ 5,3,2,7} , 那么A-B = {1,4,6}。 
现在给你2个集合A和B,求A-B有多少个数。
 

输入

第一行2个整数na和nb,表示集合A和集合B各有多少个整数,1<=na,nb<=10000。 
第二行na个不同的正整数,表示集合A里的数,每个正整数不超过10000。 
第二行nb个不同的正整数,表示集合B里的数,每个正整数不超过10000。 
 

输出

一个整数,A-B里有多少数。 

样例输入 Copy

5 4 
5 2 4 8 7 
3 7 6 2

样例输出 Copy

3

提示

A-B={5,4,8 } 
复制代码
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
map<int,bool> mp;
int main(){
    int n,m,a[10010],t,k=0;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        mp[a[i]]=true;
    }
    for(int i=0;i<m;i++)
    {
        cin>>t;
        mp[t]=false;
    }
    for(int i=0;i<n;i++)
    {
        if(mp[a[i]])
            k++;
    }
    cout<<k<<endl;
    return 0;
}
复制代码

可表示的数:

题目描述

有N个整数从左到右排成一行,如果某个数等于它前面的2个数的和,就称这个数是可以表示的数。问给定的数列里有多少个数是可以表示的数。

输入

第一行1个整数N,表示数列有多少个整数。1<=N<=10000。 
第二行N个正整数,每个正整数不超过10000。 
 

输出

一个整数,有多少可表示的数。 

样例输入 Copy

8 
5 2 2 3 4 8 7 16

样例输出 Copy

3

提示

4=2+2;8=5+3; 7=3+4
这个题我用的枚举,就是差了点那么个意思,看了位大佬的博客,把我的那点意思补上了,巧妙!!!
复制代码
#include<iostream>
using namespace std;
const int N=200010;
int a[N];
bool f[N];
int main(){
    int n,t=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    for(int i=0;i<n;i++)
    {
        if(f[a[i]])
            t++; 
        for(int j=0;j<i;j++)
        {
            f[a[i]+a[j]]=true;
        }
    }
    cout<<t<<endl;
    return 0;
}
复制代码
posted @   小志61314  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示