2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛
三道大水题,其它题都不会做,真是尴尬和无奈啊……
有想法,但是解决不了,感觉个人不会一些基本解法,终究还是个人学习的内容太少了
B. Goldbach
/*
数值较小,<2^63,分解的两个素数较小,其中一个小于xxx(etc. 1e5)
生成1~x的素数:O(n)
判断素数不能只用已求出的素数相除,这样结果不对。而且这个方法速度太慢。 Code largely studys from https://paste.ubuntu.com/p/JmDk43TTPB/ 米勒拉宾素数测试
https://www.cnblogs.com/cons/p/5188910.html 用unsigned long long 不明觉厉……
*/ #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll unsigned long long
const long maxn=1e6;
//const ll mod=1e9+7; bool vis[maxn];
long sum=;
ll zhi[maxn]; //由于考虑到取模数很大 快速幂会溢出
ll add_mod(ll a,ll b,ll mod) //a*b = a*x1 + a*x2 + …
{
ll ans=;
while (b)
{
if (b & )
ans=(ans+a)%mod;
a=(a<<)%mod;
b>>=;
}
return ans;
} ll pow_mod(ll a,ll b,ll mod) //a^b =a^(b/2)*a^(b/2) *a(if b%2==1)
{
if (b>)
{
ll tmp=pow_mod(a,b>>,mod);
tmp=add_mod(tmp,tmp,mod);
if (b & )
tmp=add_mod(tmp,a,mod);
return tmp;
}
return a; // ll r=1;
// while (b)
// {
// if (b & 1)
// r=r*a%mod;
// a=a*a%mod;
// b>>=1;
// }
// return r;
} bool Miller_Rabbin(ll s,ll chu)
{
long ci=,i;
ll d=s-; //ll
while (!(d & )) //除成奇数
{
d>>=;
ci++;
}
ll k=pow_mod(chu,d,s);
if (k==) //第一个为奇数
return ;
for (i=;i<ci;i++,k=k*k%s)
if (k==s-) //以后的为偶数
return ;
return ;
} bool pan(ll s)
{
long i,g=;
ll chu[]={,,,,};
for (i=;i<g;i++)
if (s==chu[i])
return ;
for (i=;i<g;i++)
if (s%chu[i]==)
return ;
for (i=;i<g;i++)
if (!Miller_Rabbin(s,chu[i]))
return ;
return ; // if (s<maxn)
// return vis[s];
// else
// {
// long i;
// for (i=1;i<=ans;i++)
// if (s%zhi[i]==0)
// return false;
// return true;
// }
} int main()
{
long i,j,t;
ll n;
for (i=;i<maxn;i++)
vis[i]=true;
for (i=;i<maxn;i++)
{
if (vis[i])
{
sum++;
zhi[sum]=i;
}
for (j=;j<=sum;j++)
{
if (i*zhi[j]>=maxn)
break;
vis[i*zhi[j]]=false;
if (i%zhi[j]==)
break;
}
} scanf("%ld",&t);
while (t--)
{
scanf("%llu",&n);
for (i=;i<=sum;i++)
if (pan(n-zhi[i]))
{
printf("%llu %llu\n",zhi[i],n-zhi[i]);
break;
}
}
return ;
}
/*
126
146
22222222222
*/
E. Copy and Submit II
运行题目程序一遍就知道了
内存超限(没删原程序的a数组) -> 编译错误(只删了原程序的a数组,没删其它a变量) -> 运行超时(按照题目的代码用cin) -> 运行超时(scanf没用EOF) -> 正确通过
满满的泪水………………………………………………………………………………………………………………………………………………………………………
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
const long maxn=1e6+;
const ll mod=1e9+; int main()
{
int n,i;
long long r,a;
while (scanf("%ld",&n)!=EOF)
{
r=;
for (i=;i<n;i++)
{
scanf("%lld",&a);
r=r*(a+)%mod;
}
printf("%lld\n",r);
}
return ;
}
I. Reversion Count
//找个样例从头到尾调试一次,查看变量
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
const long maxn=1e6+;
const ll mod=1e9+; long a[],b[],n; bool pan()
{
long i;
//从高位到低位,之前写错了 ,其实无关紧要,结果能被9整除
for (i=n;i>=;i--)
if (a[i]>b[i])
return true;
else if (a[i]<b[i])
return false;
return false;
} int main()
{
long i,t,x;
char s[];
// while (scanf("%s",s)!=EOF)
while (cin>>s)
{
n=strlen(s);
for (i=;i<=n;i++)
a[i]=s[n-i]-;
for (i=;i<=n;i++)
b[i]=a[n+-i];
if (!pan())
{
for (i=;i<=n;i++)
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
}
for (i=;i<=n;i++)
{
a[i]-=b[i];
if (a[i]<)
{
a[i+]--;
a[i]+=;
}
}
x=;
for (i=n;i>=;i--)
{
x=x*+a[i];
a[i]=x/;
x=x%;
}
while (n> && a[n]==)
n--;
//只使用一位数字,之前写错了
while (n> && a[n]==a[n-])
n--;
if (n==)
printf("YES\n");
else
printf("NO\n");
}
return ;
}
L. Nise-Anti-AK Problem
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
const long maxn=1e6+;
const ll mod=1e9+; long a[]; int main()
{
long t,n,i;
// for (i=1;i<=100;i++)
// {
// long sum=0;
// for (int j=0;j<=i;j++)
// sum+= (i | j);
// printf("%ld\n",sum);
// } scanf("%ld",&t);
while (t--)
{
scanf("%ld",&n);
for (i=;i<=n;i++)
scanf("%ld",&a[i]);
sort(a+,a+n+);
printf("%ld\n",a[n]);
}
return ;
}
2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛的更多相关文章
- 2018 ACM ICPC 南京赛区 酱油记
Day 1: 早上6点起床打车去车站,似乎好久没有这么早起床过了,困到不行,在火车上睡啊睡就睡到了南京.南航离南京南站很近,地铁一站就到了,在学校里看到了体验坐直升机的活动,感觉很强.报道完之后去吃了 ...
- 2018 ACM/ICPC 南京 I题 Magic Potion
题解:最大流板题:增加两个源点,一个汇点.第一个源点到第二个源点连边,权为K,然后第一个源点再连其他点(英雄点)边权各为1,然后英雄和怪物之间按照所给连边(边权为1). 每个怪物连终点,边权为1: 参 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1001 - Buy and Resell 【优先队列维护最小堆+贪心】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/O ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会部分题解
题目链接 2018 ACM 国际大学生程序设计竞赛上海大都会 下午午休起床被同学叫去打比赛233 然后已经过了2.5h了 先挑过得多的做了 .... A题 rand x*n 次点,每次judge一个点 ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 F题 Clever King(最小割)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】
Tree and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
随机推荐
- java后端面试题汇总
转载链接:https://www.nowcoder.com/discuss/90776?type=0&order=0&pos=23&page=0 基础篇 数据结构与算法 线性表 ...
- Spring Bean注册解析(二)
在上文Spring Bean注册解析(一)中,我们讲解了Spring在注册Bean之前进行了哪些前期工作,以及Spring是如何存储注册的Bean的,并且详细介绍了Spring是如何解析 ...
- java实验五实验报告
一.实验内容 Cmp传输与加解密 结对编程,一人服务器,一人客户端,服务器向客户端发送经RSA加密的密钥和用密钥加密的密文(使用DES算法),客户端负责接收加密后的密钥和密文,并解密得出明文. 二.实 ...
- 第10章 系统级I/O(下)
10.7 I/O重定向 Unix外壳提供了I/O重定向操作符,允许用户将磁盘文件和标准输出输入联系起来. 例如:unix>ls>foo.txt,使得外壳加载和执行ls程序,将标准输出重定 ...
- 用java进行简单的万年历编写
import java.util.Scanner; public class PrintCalendarDemo1 { public static void main(String[] args) { ...
- 项目Beta冲刺(团队)随笔集
凡事预则立 项目Beta冲刺准备 第一天 项目Beta冲刺(团队)第一天 第二天 项目Beta冲刺(团队)第二天 第三天 项目Beta冲刺(团队)第三天 第四天 项目Beta冲刺(团队)第四天 第五天 ...
- 结对作业(1.0版)(bug1已修复)
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing ...
- json反序列化对象
这个是同事研究的wcf中中根据type类型反序列化json的示例 /// <summary> /// json转对象 /// </summary> /// <param ...
- [建树(非二叉树)] 1106. Lowest Price in Supply Chain (25)
1106. Lowest Price in Supply Chain (25) A supply chain is a network of retailers(零售商), distributors( ...
- 简单复利计算c语言实现
#include<stdio.h>#include<math.h>float i; //利率 float p; //期初金额 float F; //未来值 int n; //期 ...