随笔分类 -  NYOJ

摘要:View Code #include<stdio.h>#include<string.h>#define N 16325int a[N];main(){ int i,j,m; scanf("%d",&m); memset(a,0,sizeof(a)); a[0]=1; for(i=2;i<=m;i++) { int c=0; for(j=0;j<N;j++) { int s=a[j]*i+c; a[j]=s%10; c=s/10;//进位 ... 阅读全文
posted @ 2012-04-28 13:44 加拿大小哥哥
摘要:View Code //参考大牛的代码,在stack中插入数据是有序的,而且是进行替换而不需要挪动——也就是说,我们可以使用二分查找,将每一个数字的插入时间优化到O(logN)#include<stdio.h>#define min -32769int stack[100001];//模拟栈,为了更形象int main(){ int T,i,num;int top,low,high,mid; while(~scanf("%d",&T)) { top=0;stack[0]=min; for(i=0;i<T;i++) { ... 阅读全文
posted @ 2012-04-24 09:50 加拿大小哥哥
摘要:1.二分递归:使用a*b(mod n)=(a(mod n)*b(mod n))(mod n)即可。#include<stdio.h>/*错误long long fun(long long a,long long b,long long c){ long long temp; if(0==b) return 1; temp=fun(a,b/2,c); if(b&1) return temp*a%c; return temp;}*//*AClong long fun(long long x,long long y,long long p){ long long t=x; lon 阅读全文
posted @ 2012-04-22 14:35 加拿大小哥哥
摘要:街区最短路径问题时间限制:3000 ms | 内存限制:65535 KB 难度:4描述 一个街区有很多住户,街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。用(x,y)来表示住户坐在的街区。例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。现在要建一个邮局,使得各个住户到邮局的距离之和最少。求现在这个邮局应该建在那个地方使得所有住户距离之和最小;输入 第一行一个整数n<20,表示有n组测试数据,下面是n组数据;每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户 阅读全文
posted @ 2012-04-18 21:56 加拿大小哥哥
摘要:孪生素数问题时间限制:3000 ms | 内存限制:65535 KB难度:2描述写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离 为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读 题不认真仔细的童鞋,规定,两个素数相邻为1的也成为孪生素数。输入第一行给出N(0<N<100)表示测试数据组数。接下来组测试数据给出m,表示找出m之前的所有孪生素数。(0<m<1000000)输出每组测试数据输出占一行,该行为m范围内所有孪生素数组数。样例输入114样例输出4//筛法求孪生素数#include&l 阅读全文
posted @ 2012-04-14 13:33 加拿大小哥哥
摘要:#include<stdio.h>#include<string.h>int substring(char str2[],char str1[],int count){ int i,j,k; int m,n; m=strlen(str2),n=strlen(str1); for(i=0;i<=m-n;i++) { k=i; for(j=0;j<n;j++) if(str2[k]==str1[j]) k++; else break; if(str1[j]=='\0') count++; } return count... 阅读全文
posted @ 2012-03-30 08:39 加拿大小哥哥