首页 > 其他分享 >2022csp-j复赛试题及答案

2022csp-j复赛试题及答案

时间:2023-09-07 09:25:53浏览次数:44  
标签:试题 int long 2022csp ans n1 include 复赛 lld

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main() {
 5     int a,b;
 6     cin>>a>>b;
 7     long long ans=1;//注意long long ,不能用int
 8     for(int i=1; i<=b; i++) {
 9         ans*=a;
10         if(ans>1e9) {
11             cout<<-1;
12             return 0;
13         }
14     }
15     cout<<ans;
16     return 0;
17 }

//60分代码
#include <iostream>
using namespace std;
long long n,e,d;
int k;

int main() {
    scanf("%d",&k);
    while(k--) {
        scanf("%lld %lld %lld",&n,&e,&d);
        int f=0;
        for(long long  i=1; i*i<=n; i++) {
            if(n%i==0) { //找到了能够整除的数
                if((i-1)*(n/i-1)+1==e*d) {
                    f=1;
                    printf("%lld %lld\n",i,n/i);
                    break;
                }
            }
        }
        if(!f) printf("NO\n");
    }
    return 0;
}
 1 #include <iostream>//满分代码
 2 #include<cmath>
 3 using namespace std;
 4 long long n,e,d,p,q,t,m;
 5 int k;
 6 
 7 int main() {
 8     scanf("%d",&k);
 9     while(k--) {
10         scanf("%lld %lld %lld",&n,&e,&d);
11         m=n-e*d+2;//p+q=m,p*q=n
12         t=sqrt(m*m-4*n);//q-p=t
13         q=(m+t)/2;
14         p=m-q;
15         if(p*q==n&&e*d==(p-1)*(q-1)+1) printf("%lld %lld\n",p,q);
16         else printf("NO\n");
17     }
18     return 0;
19 }

 1 //P8816 [CSP-J 2022] 上升点列
 2 #include <iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5 using namespace std;
 6 int n,k;
 7 struct points {
 8     int x,y;
 9 } p[510];
10 
11 bool cmp(const points a,const points b) {
12     if(a.x==b.x) return a.y<b.y;
13     else return a.x<b.x;
14 }
15 int f[510][110];//以i点为终点,再添加上j个点的情况下最大序列长度
16 int main() {
17     scanf("%d %d",&n,&k);
18     for(int i=1; i<=n; i++) {
19         scanf("%d %d",&p[i].x,&p[i].y);
20     }
21     sort(p+1,p+1+n,cmp);
22     int ans=0;
23     for(int i=1; i<=n; i++) {//以i为终点
24         for(int j=0; j<=k; j++) {//添加j个点
25             f[i][j]=j+1;//以i为终点,后续添加j个点最短的长度 
26             for(int l=1; l<i; l++) { //l为i的前一个点
27                 if(p[l].x<=p[i].x&&p[l].y<=p[i].y) {//横坐标、纵坐标值均单调不减
28                     int t=p[i].x-p[l].x+p[i].y-p[l].y-1;//需要添加的点数量
29                     if(j>=t) f[i][j]=max(f[i][j],f[l][j-t]+t+1);
30                     //cout<<p[i].x<<p[l].x<<p[i].y<<p[l].y<<t<<endl;
31                 }
32                 //cout<<"i="<<i<<" j="<<j<<" l="<<l<<" f="<<f[i][j]<<endl;
33             }
34 
35             ans=max(ans,f[i][j]);
36         }
37     }
38     printf("%d",ans);
39     return 0;
40 }

 1 //P8815 [CSP-J 2022] 逻辑表达式
 2 #include <iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stack>
 6 using namespace std;
 7 char s[1000010];
 8 struct number {
 9     int num;
10     int op1,op2; //&,|
11 };
12 stack<number> n;//数字
13 stack<char> f;
14 int l;
15 void cul() {
16     number n2=n.top();//操作数1
17     n.pop();
18     number n1=n.top();//操作数2
19     n.pop();
20     char c=f.top();
21     f.pop();
22 
23     int ans;
24     if(c=='&') {
25         ans=n1.num&n2.num;
26         if(n1.num==0) n.push({ans,n1.op1+1,n1.op2});//通过&操作 ,且短路
27         else n.push({ans,n1.op1+n2.op1,n1.op2+n2.op2});
28     } else {
29         ans=n1.num|n2.num;
30         if(n1.num==1) n.push({ans,n1.op1,n1.op2+1});//通过|操作 ,且短路
31         else n.push({ans,n1.op1+n2.op1,n1.op2+n2.op2});
32     }
33     //cout<<"cul"<<n1.num<<c<<n2.num<<'='<<ans<<" "<<n.top().op1<<' '<<n.top().op2<<endl;
34     return;
35 }
36 void work() {
37     for(int i=0; i<l; i++) {
38         if(s[i]=='0'||s[i]=='1') {
39             n.push({s[i]-'0',0,0});
40         }//数字进栈
41         else if(s[i]=='(') {
42             f.push(s[i]);
43         } else if(s[i]=='&')    {
44             while(!f.empty()&&f.top()=='&') {
45                 cul();
46             }
47             f.push(s[i]);
48         } else if(s[i]=='|') {
49             while(!f.empty()&&(f.top()=='|'||f.top()=='&')) {
50                 cul();
51             }
52             f.push(s[i]);
53         } else if(s[i]==')') {
54             while(!f.empty()&&f.top()!='(') {
55                 cul();
56             }
57             f.pop();
58         }
59     }
60     while(!f.empty()) {
61         cul();
62     }
63 }
64 
65 int main() {
66     cin>>s;
67     l=strlen(s);
68     work();
69     number t=n.top();
70     cout<<t.num<<endl<<t.op1<<' '<<t.op2;
71     return 0;
72 }

 

标签:试题,int,long,2022csp,ans,n1,include,复赛,lld
From: https://www.cnblogs.com/mantou20210331/p/17683948.html

相关文章

  • Linux运维工程师面试题(8)
    Linux运维工程师面试题(8)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1docker的网络类型,使用场景none:在使用none模式后,Docker容器不会进行任何网络配置,没有网卡、没有IP也没有路由,因此......
  • 构建可扩展的应用:六边形架构详解与实践 【含面试题】
    面试题分享2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、AI讲话、翻译,GPU点亮AI想象空间史上最全文档AI绘画stablediffusion资......
  • Linux运维工程师面试题(7)
    Linux运维工程师面试题(7)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1常用的ansible模块有哪些PingCommandShellScriptCopyFetchFileYumServiceUserGroupLineinfileRepla......
  • Linux运维工程师面试题(7)
    目录Linux运维工程师面试题(7)1常用的ansible模块有哪些2说一下ansible使用roles编排的目录结构3docker六大命名空间namespace4cgroups的作用5runc的作用6docker常用的命令7docker存储引擎有哪些,区别是什么8进入docker容器有几种方法,区别是什么9Dockerfile......
  • Android并发编程高级面试题汇总(含详细解析 十七)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • 【面试题精讲】MySQL中覆盖索引是什么
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址系列文章地址在MySQL中,覆盖索引是一种特殊类型的索引,它包含了查询所需的所有列,而不仅仅是索引列本身。当一个查询可以完全使用覆盖索引来满足时,MySQL可以直接从......
  • NOIP2015提高组复赛day1解析
    1. 解析:送分题,按题意模拟即可代码:#include<bits/stdc++.h>#definelllonglong#definexfirst#defineysecondusingnamespacestd;constintN=39+7;inta[N][N],n;map<int,pair<int,int>>mp;intmain(){ freopen("magic.in","r&......
  • ##线程面试题##
    一.java中线程实现几种实现方式在Java中实现多线程一共有四种方式:(1)继承Thread类(2)实现Runable接口(3)实现Callable接口(4)线程池1.继承java.lang.Thread,重写run方法,启动线程,调用start()方法>2.实现java.lang.Runnable接口,实现run方法3.实现Callable接口(JDK8新特性)该方法效率较低,......
  • Linux运维工程师面试题(6)
    Linux运维工程师面试题(6)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1数据库事务的四个特性及含义数据库事务的4个特性:原⼦性、持久性、⼀致性、隔离性原⼦性:整个事务中的所有操作要么......
  • 面试题:spring中有两个id相同的bean对象会报错吗?
    一个xml文件声明两个beanid相同的对象,在项目启动时就会报错(对xml解析)。要求beanId唯一,该beanId元素标签已经被使用。两个xml文件声明相同beanId的对象,项目启动是没有问题的。使用时,属性值是后加载的对象值(先加载的会被后加载的覆盖)@Configuration注解+@Bean注解声明的相同......