1001 数组中和等于K的数对

基准时间限制:1 秒 空间限制:131072 KB

分值: 5 难度:1级算法题

给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,

找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。

Input

第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 <= N <= 50000,-10^9 <= K <= 10^9)

第2 - N + 1行:A数组的N个元素。(-10^9 <= A[i] <= 10^9)

Output

第1 - M行:每行2个数,要求较小的数在前面,并且这M个数对按照较小的数升序排列。

如果不存在任何一组解则输出:No Solution。

Input示例

8 9

-1

6

5

3

4

2

9

0

8

Output示例

-1 9

0 8

2 6

3 5

#include<algorithm>
#include<iostream>
#include<cstdiO>
#include<set>
using namespace std; int n,k;
int s[100005];
set<int>str; int main(){
cin>>k>>n;
int ans=0,num;
for(int i=1;i<=n;++i){
scanf("%d",&s[i]);
str.insert(s[i]);
}
sort(s+1,s+n+1);
for(int i=1;i<=n;++i){
if(k-s[i]<s[i])break;
if(k-s[i]==s[i])continue;
if(str.count(k-s[i])){
ans++;
cout<<s[i]<<' '<<k-s[i]<<endl;
}
}
if(!ans)cout<<"No Solution";
return 0;
}

比较正常的做法是\(O(n^2)\)枚举

但是会被卡

所以可以二分

因为可以与一个数配对的数有且只有一个

1002 数塔取数问题

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注

一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值。

每次只能走到下一层相邻的数上,例如从第3层的6向下走,只能走到第4层的2或9上。

5

8 4

3 6 9

7 2 9 5

例子中的最优方案是:5 + 8 + 6 + 9 = 28

Input

第1行:N,N为数塔的高度。(2 <= N <= 500)

第2 - N + 1行:每行包括1层数塔的数字,第2行1个数,第3行2个数......第k+1行k个数。数与数之间用空格分隔(0 <= A[i] <= 10^5) 。

Output

输出最大值

Input示例

4

5

8 4

3 6 9

7 2 9 5

Output示例

28

#include<iostream>
#include<cstdio>
#define N 505
using namespace std; int n;
int s[N][N];
int f[N][N]; int main(){
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=i;++j)
cin>>s[i][j];
for(int i=1;i<=n;++i)
for(int j=1;j<=i;++j)
f[i][j]=max(f[i-1][j],f[i-1][j-1])+s[i][j];
int ans=0;
for(int i=1;i<=n;++i)
ans=max(ans,f[n][i]);
cout<<ans;
return 0;
}

水动规

1003 阶乘后面0的数量

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注

n的阶乘后面有多少个0?

6的阶乘 = 12345*6 = 720,720后面有1个0。

Input

一个数N(1 <= N <= 10^9)

Output

输出0的数量

Input示例

5

Output示例

1

#include<iostream>
#include<cstdio>
using namespace std; int main(){
int n;
cin>>n;
int ans=0;
int sn=n;
while(n>0){
ans+=n/2;
n/=2;
}
int ans1=0;
while(sn>0){
ans1+=sn/5;
sn/=5;
}
cout<<min(ans,ans1);
return 0;
}

找出作为因子的5的数量和2的数量

取min就好

但是不能直接求10的数量

1004 n^n的末位数字

题目来源: Author Ignatius.L (Hdu 1061)

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注

给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。

Input

一个数N(1 <= N <= 10^9)

Output

输出N^N的末位数字

Input示例

13

Output示例

3

#include<iostream>
#include<cstdio>
using namespace std; int n;
int mmm[10][5]={
{0,0,0,0},{1,1,1,1},
{6,2,4,8},{1,3,9,7},
{6,4,6,4},{5,5,5,5},
{6,6,6,6},{1,7,9,3},
{6,8,4,2},{1,9,1,9}
}; int main(){
cin>>n;
cout<<mmm[n%10][n%4];
return 0;
}

发现

1009 数字1的数量

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 取消关注

给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。

例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。

Input

输入N(1 <= N <= 10^9)

Output

输出包含1的个数

Input示例

12

Output示例

5

#include<cstdio>
using namespace std; int main(){
int n;
int t,tn;
long long ans=0;
int mul=1;
scanf("%d",&n);
tn=n;
while(tn){
t=tn%10;
if(t==0)
ans+=n/(mul*10)*mul;
else if(t==1){
ans+=n/(mul*10)*mul;
ans+=(n%mul)+1;
}
else
ans+=(n/(mul*10)+1)*mul;
mul*=10,tn/=10;
}
printf ("%lld\n",ans);
return 0;
}

51nod 几道题的更多相关文章

  1. 【51Nod 1616】【算法马拉松 19B】最小集合

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1616 这道题主要是查询一个数是不是原有集合的一个子集的所有数的gcd. ...

  2. 51nod百度之星2016练习赛

    今天看了看51nod发现有这样一个练习赛,就做了做.因为实力太弱想不出E题,各位神犇勿D. (5.26UPD:E题想粗来了) A 区间交 不难发现若干线段[li,ri]的交就是[max(li),min ...

  3. 51nod 最近刷题 简要题解

    51nod 1564 由于数据是随机的,可以证明,对于每一个数,向左或右找比它小的数,长度是logn级别的 考虑枚举最大值 注意,对于每一个最大值,如果直接用2个循环枚举左右端点的话,理论是lognl ...

  4. 51Nod 算法马拉松15 记一次悲壮而又开心的骗分比赛

    OwO 故事的起源大概是zcg前天发现51Nod晚上有场马拉松,然后他就很开心的过去打了 神奇的故事就开始了: 晚上的时候我当时貌似正在写线段树?然后看见zcg一脸激动告诉我第一题有九个点直接输出B就 ...

  5. 51Nod 有限背包计数问题 题解报告

    首先这道题理论上是可以做到O(nlogn)的,因为OEIS上有一个明显可以用多项式乘法加速的式子 但是由于模数不是很兹磁,所以导致nlogn很难写 在这里说一下O(n*sqrt(n))的做法 首先我们 ...

  6. 51nod水题记

    妈呀51nod已经刷不动了又开始跟bzoj一样总是得看题解了...那么发一下总结吧... 1051:最大子矩阵 #include<cstdio> #include<cstring&g ...

  7. 51Nod 1091 线段的重叠(贪心+区间相关,板子题)

    1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...

  8. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧……然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

  9. 51Nod 1815 调查任务

    发现绍一的人很喜欢做51nod,不得不说这还是一个很全能的良心OJ 但是做的这道题就一点都不良心了,简直是毒瘤,调了一早上 首先我们考虑让一条路径的\(a_x\ mod\ a_y\)的值最大,我们简单 ...

随机推荐

  1. BZOJ 4408 FJOI2016 神秘数 可持久化线段树

    Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1+1+14 = 45 = 4+16 ...

  2. 【转】H5 - HTML5新增标签

    下面分别是传统的div+css的页面布局方式 下面是HTML5布局方式: 是不是精简了很多呢  现在来说说图片中出现的标签: 结构标签:(块状元素) 有意义的div artical 标记定义一篇文章  ...

  3. Python创建目录文件夹

    Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建. 主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.mak ...

  4. 关于如何利用原生js动态给一个空对象添加属性以及属性值

    首先,回忆一下,访问对象属性一共有两种方法:点获取法和方括号获取法.而我们最常用的就是点获取法了.但是当我们遇到需要给对象动态添加属性和属性值时,点获取法好像就不太好用了,尤其是我们不知道属性名的时候 ...

  5. clientHeight & clientWidth & offsetHeight & offsetWidth & outerWidth & innerWidth & outerWidth & outerHeight

    clientHeight & clientWidth & offsetHeight & offsetWidth MDN https://developer.mozilla.or ...

  6. oracle序列使用时 先用伪列将序列的id调整到正确的位置

  7. background 背景图铺满界面

    background <body background="/image/1.png" style=" background-repeat:no-repeat ; b ...

  8. NOI2018 D1T1 [NOI2018]归程 解题报告

    P4768 [NOI2018]归程 题目描述 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 \(n\) 个节点.\(m\) 条边的无向连通图(节点的编号从 \ ...

  9. AOJ.602 大家来找茬

    大家来找茬 Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 627 Submiss ...

  10. Swing中使用UIManager批量自定义单一JComponent组件默认属性

    最近在研究Swing,被它的复杂性气的快吐血了,刚才本打算把JFrame的背景色换成白底,结果发现事情没想象中那么顺利,调用setBackground完全没有效果,猛然醒悟到JPanel本身是带不透明 ...