Just say hello to algorithm

-我实在是太缺练,而且那么笨。

Just say hello to algorithm

做了一下以前发的简单的题目,a题非常水,然而还是wa了一次,因为no greater than 2^32 要开long long,用int 不行,int范围是-2^32~2^32-1

F题

Design Tutorial: Learn from Math

题意:给你一个大于等于12的数,要你用两个合数表示出来。//合数指自然数中除了能被1和本身整除外,还能被其他的数整除(不包括0)的数。

分析:为什么给你大与等于12呢,我们知道偶数除了2都是合数,这样给你一个偶数,你减去一个偶数得到的就是偶数啦,因为n>=12,所以减去4的话,得到的是>=8的偶数,肯定也是合数,当然你也可以减去6、8,大于8就不行了。

然后给你奇数呢?你减去给奇数就得到偶数啦,减去一个是合数的奇数,最小的就是9,奇数时:n>=13,n-9>=4

#include<stdio.h>
int main(){
    int a,b;
    int n;
    scanf("%d",&n);
    if(n%2){
        printf("%d %d\n",9,n-9);
    }else{
        printf("%d %d\n",8,n-8);
    }
    return 0;
}

这题也可以枚举

#include<stdio.h>
int isComposite(int a){
    if(a==2)return 0;
    for(int i=2;i*i<=a;i++)
        if(a%i==0)return 1;
    return 0;
}

int main(){
    int a,n;
    scanf("%d",&n);
    for(a=2;a<n;a++)
        if(isComposite(a)&&isComposite(n-a)){
            printf("%d %d",a,n-a);
            break;
        }
    return 0;
}

  

H题 Pseudoprime numbers

题意:求1^m + 2^m + 3^m + …… + n^m(答案mod 1e9+7)

注意:每个加起来的时候和加起来后也要mod

#include<stdio.h>
#define M 1000000007
long long qpow(long long a,long long m)//快速幂
{
    long long ans=1,k=a;
    while(m)
    {
        if(m&1)
            ans=(ans*k)%M;
        k=(k*k)%M;
        m>>=1;
    }
    return ans;
}
int main()
{
    long long n,m,ans;
    while(scanf("%lld%lld",&n,&m)!=EOF)
    {
        ans=0;
        for(int i=1; i<=n; i++)
            ans+=qpow(i,m)%M;//这里mod一下
        printf("%lld\n",ans%M);//这里mod一下
    }
    return 0;
}

  

G题 SwapSort

题意:用少于n次的swap来排好序

分析:选择排序,每次在未排序的后面选出最小的一个然后和未排序的第一个交换,这样最多n-1次交换即可排好序,用数组记录交换的两个数的位置。

#include<stdio.h>
int n,i,j,a[3002],coun,temp,swap1[3001],swap2[3001];
int main()
{
    scanf("%d",&n);
    for(i=0; i<n; i++)
        scanf("%d",a+i);
    for(i=0; i<n-1; i++)
    {
        int minj=i;
        for(j=i+1; j<n; j++)
            if(a[j]<a[minj])minj=j;
        if(i!=minj)
        {
            swap1[coun]=i;
            swap2[coun]=minj;

            temp=a[minj];
            a[minj]=a[i];
            a[i]=temp;

            coun++;
        }
    }
    printf("%d\n",coun);
    if(coun)
        for(i=0; i<coun; i++)
            printf("%d %d\n",swap1[i],swap2[i]);
    return 0;
}

  

-我太笨了,要加油啊!

时间: 2024-10-13 23:25:05

Just say hello to algorithm的相关文章

PLA Percentron Learning Algorithm #台大 Machine learning #

Percentron Learning Algorithm 于垃圾邮件的鉴别 这里肯定会预先给定一个关于垃圾邮件词汇的集合(keyword set),然后根据四组不通过的输入样本里面垃圾词汇出现的频率来鉴别是否是垃圾邮件.系统输出+1判定为垃圾邮件,否则不是.这里答案是第二组. 拿二维数据来做例子.我们要选取一条线来划分红色的叉叉,和蓝色的圈圈样本点(线性划分).怎么做呢?这里的困难之处就在于,其实可行的解可能存在无数条直线可以划分这些样本点.很难全部求解,或许实际生活中并不需要全部求解.于是,

STL algorithm算法is_partitioned(26)

is_partitioned原型: std::is_partitioned template <class InputIterator, class UnaryPredicate> bool is_partitioned (InputIterator first, InputIterator last, UnaryPredicate pred); 测试范围内的元素是否是以pred为准则的一个划分.如果是,则返回true,否则返回false. 划分的意思是说,对每个元素进行pred(*it),得

支付宝支付php的demo或sdk报错 Warning: openssl_sign() [function.openssl-sign]: Unknown signature algorithm. in

最近在做支付宝支付,在本地测试一切正常,上传到服务器就遇到报错: Warning: openssl_sign() [function.openssl-sign]: Unknown signature algorithm. in 后来查了查,是我的服务器上PHP环境支持openssl_sign()但却不支持 OPENSSL_ALGO_SHA256这样的参数,问了一下大佬,才发现这个参数是在php5.4.8以上版本才支持,低版本的是使用的SHA256,于是乎试了一下,搞定! 报错原因是支付宝的dem

Berlekamp-Massey Algorithm [for Team Problem 5525]

Input: 第一行为两个正整数n,m 第二行为n个整数a1..an 最后一行为一个正整数k Output: 为一个整数,代表方案数对1000000007取模的值 Sample Input 5 3 1 1 2 0 2 2 Sample Output 3 来自毛爷爷17年论文 Berlekamp-Massey Algorithm直接开算 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const

Strassen algorithm(O(n^lg7))

Let A, B be two square matrices over a ring R. We want to calculate the matrix product C as {\displaystyle \mathbf {C} =\mathbf {A} \mathbf {B} \qquad \mathbf {A} ,\mathbf {B} ,\mathbf {C} \in R^{2^{n}\times 2^{n}}} If the matrices A, B are not of ty

LabelRank(A Stabilized Label Propagation Algorithm for Community Detection in Networks)非重叠社区发现

最近在研究基于标签传播的社区分类,LabelRank算法基于标签传播和马尔科夫随机游走思路上改装的算法,引用率较高,打算将代码实现,便于加深理解. 一.概念 相关概念不再累述,详情见前两篇文章 二.算法思路 (1)Propagation (2)Inflation (3)Cut off (4)Explicit Conditional Update (5)Stop Criterion 三.A Stabilized Label Propagation Algorithm for Community D

(转)常用算法(Algorithm)的用法介绍

2算法部分主要由头文件<algorithm>,<numeric>和<functional>组成. 2<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较.交换.查找.遍历操作.复制.修改.反转.排序.合并等等. 2<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作. 2<functional>中则定义了一些模板类,用以声明函数对象. 2STL提供

hihocoder1198 Memory Allocating Algorithm(链表~)

题意: 小Hi和小Ho最近在研究内存分配的机制,他们写了一个比较简单的内存.内存可以表示成M个连续的存储空间,下标为0..M-1: 每当有数据写入时,内存分配程序会从下标0开始向右找一块足够存放下该数据的区域,将该数据写入.比如写入一个长度为2的数据,因为是第一个数据,我们用1来表示: 之后继续依次写入长度为3的数据和长度为2的数据,则有: 当数据足够多后,我们可能会遇到剩下的空间不足以写下新的数据.这时内存程序会从最早的数据开始进行删除.假设我们现在写到第8个数据把内存写满了: 这时我们需要写

Algorithm - Introduction

Goal: Use Computer to solve problems step by step!!! What is Computer Science? Computer Science is the study of problems, problem-solving, and the solutions that come out of the problem-solving process. What is Programming? Programming is the process

数据结构(DataStructure)与算法(Algorithm)、STL应用

catalogue 0. 引论 1. 数据结构的概念 2. 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 2.3.1 二叉树 3. 物理结构实例 3.1 链表 3.1.1 单向线性链表 3.1.2 单向循环链表 3.1.3 双向线性链表 3.1.4 双向循环链表 3.1.5 数组链表 3.1.6 链表数组 3.1.7 二维链表 3.2 顺序存储 4. 算法 4.1 查找算法 4.2 排序算法 0. 引论 0x1: 为什么要学习数据结构 N.沃思(Niklaus  Wirth)教授提