无聊刷题1

一级算法简单题。。

51nod 1001 数组中和等于K的数对

题解:排序再二分搜索能过,但有个复杂度为O(n)的方法:如果a[i]>=k/2,则让a[i]=k-a[i],排序后直接判断相邻两项是否相等即可。

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int a[50001], n, k, i,  f= 0;
    scanf("%d%d", &k, &n);
    for(i = 0;i < n;++i){
        scanf("%d", &a[i]);
        if(a[i] >= k/2)  a[i] = k-a[i];
    }
    sort(a, a+n);
    for(i = 0;i < n-1;++i){
        if(a[i] == a[i+1]){
            printf("%d %d\n", a[i], k-a[i]);
            i++; f = 1;
        }
    }
    if(!f) printf("No Solution\n");
    return 0;
}

51nod 1002 数塔取数问题

最简单的dp

#include<stdio.h>
#include<algorithm>
using namespace std;
int a[501][501];
int main(){
    int n, i, j, f = 0;
    scanf("%d", &n);
    for(i = 0;i < n;++i)
        for(j = 0;j <= i;++j) scanf("%d", &a[i][j]);
    for(i = n - 2;i >= 0;--i)
        for(j = 0;j <= i;++j)
        a[i][j] += max(a[i+1][j], a[i+1][j+1]);
    printf("%d\n", a[0][0]);
    return 0;
}

51nod 1003 阶乘后面0的数量

题解:要求n!末尾0的个数,只要求出1~n各个数的因子中5的个数(2的个数远多于5)

#include<stdio.h>
int main(){
    int n, m=0;
    scanf("%d", &n);
    while(n >= 5){
        m += n/5;
        n /= 5;
    }
    printf("%d\n", m);
    return 0;
}

51nod 1004 n^n的末位数字

题解:找规律,末位数字:n^1,n^2,n^3,n^4,n^5(=n^1)….周期为4

#include<stdio.h>
#include<math.h>
int main(){
    int n, a, b;
    scanf("%d", &n);
    a = n % 10;
    b = n % 4;
    if(b == 0) b = 4;
    b = pow(a, b);
    printf("%d\n", b % 10);
    return 0;
}
时间: 2024-10-12 19:40:15

无聊刷题1的相关文章

刷题方法论

[转自一亩三分田]谈谈面试官在面试coding题目时的考察终点与心理活动 本人简介: 曾经微软dev, 35+, 10年经验, 有FLG offer.  去年加入一个start up 公司, 最近前景不明, 在犹豫要不要去个稳定点的大公司.  我从sde开始面试其他人, 到现在估计面试过100+人次的面试和debrief. 我面过coding, problem solving, design, behavior.  本帖子只谈论纯粹coding, 视情况讨论要不要再开帖子讨论其他方面. 本文涉及

用js刷题的一些坑

leecode可以用js刷题了,我大js越来越被认可了是吧.但是刷题中会因为忽略js的一些特性掉入坑里.我这里总结一下我掉过的坑. 坑1:js中数组对象是引用对象 js中除了object还有数组对象也是引用对象,这点常常被忽视,所以在递归的时候传递数组要用arr.slice(0)这样复制一个一样的新数组,不然会出现你传入的数组会被同级的递归改变,结果就不对了. 所以只要数组复制的地方最好都要这么写,除非你真的想引用.而且注意是slice不是splice这两个方法差别很大,你如果用splice(0

LeetCode刷题之一:寻找只出现一次的数字

投简历的时候看到了个刷题网站,http://www.nowcoder.com/527604,就做了一套题,现记录下来. 题目为: Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it withou

【leetcode刷题笔记】Sum Root to Leaf Numbers

Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number. An example is the root-to-leaf path 1->2->3 which represents the number 123. Find the total sum of all root-to-leaf numbers. For example, 1 / 2 3 T

BZOJ第一页刷题计划

BZOJ第一页刷题计划 已完成:1 / 100 BZOJ1000:A+B

刷题记录

刷题啦,刷题啦,咱也刷算法题. 先从牛客网的JS方面刷起,接着刷数据结构和算法,然后去刷leetcode,这儿记载自己从出错的地方. 1.题目描述 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回 . 没有认真思考,写下了如下的答案 function removeWithoutCopy(arr, item) { for(i = 0; i < arr.length; i++) { if( arr[i] === item) { arr.spli

停课刷题总结-给自己一点鼓励吧

嗯,我已经停了四五天课在家刷BZOJ准备复赛了,感觉压力好大.但是,实际上感觉效率并不高,每天就是7-8题的样子,而且并不是每题都有质量.而且这几天刷下来,我貌似因为刷了太多水题的关系,打字写题的速度变慢了,有一点悠闲没有紧迫感了,要赶快把这个习惯给改掉!今天去学校做题被虐了,竟然一个简单的Hash没有调对[虽然我现在还是不知道为什么会死循环QAQ.]感觉吧,可能因为刷题有点不在状态了.[其实也因为刷题的间隙玩了几盘LOL,游戏这东西QAQ]被虐了,感觉很不爽,有点难受,毕竟我付出了那么多努力,

leetcode 刷题之路 63 Binary Tree Zigzag Level Order Traversal

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its zig

leetcode 刷题之路 64 Construct Binary Tree from Inorder and Postorder Traversal

Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume that duplicates do not exist in the tree. 给出二叉树的中序遍历和后序遍历结果,恢复出二叉树. 后序遍历序列的最后一个元素值是二叉树的根节点的值,查找该元素在中序遍历序列中的位置mid,根据中序遍历和后序遍历性质,有: 位置mid以前的序列部分为二叉树根节点左子树中