link:http://poj.org/problem?id=3725

这题很有意思,所有数的排列是按其字典序排序的。题意是未知n,但知道第k位的数

是m,问最小的n是多少。这题想了好久,然后看了别人的思想才自己写了段代码,

比如假如已知n=182,问n的位置是多少,因为n为3位数,当一位数时,比它小的有1

两位数时10-18 三位数时100-181 三者相加就是n的位置

反之亦然,我们可以先求出m所在的位置在哪里,然后和k比较,如果比k小,则位数加一

继续查找位置,直到不能减为止。

code:

#include <stdio.h>
#[......]

继续阅读

link:http://poj.org/problem?id=2084

题意:已知1-2n个数围成一个圈,问用线段分别连接两点,且没有交点,问有多少种。

思路:这题以前老师说过,标准的catalan数,只不过n的范围有点大,所以得用上大数,

自己写了个很烦的,网上有简单版本。

下面是我的代码,仅供参考

code:

#include <stdio.h>
#include <string.h>
char p[110][200];
void add(char a[],char b[],char c[])/*大数相加*/
{
    i[......]

继续阅读

link:http://uva.onlinejudge.org/external/119/11977.html

题意:已知整数n,且n的阶乘在b进制下末尾至少有t个0,现在告诉我们n和t,求最大值b是多少。。

思路:以前我们做过类似的一题,题目是已知n和b,求最后的末尾0有多少个,其实两个大体思想是一样的,

后面一种的方法是对b进行质因数分解,然后对每个因子求出一个相应的个数,取其中最小的那个

这题是已知0的个数,那我们把n内的质因素筛选出来,然后算出每个因子对应的0的个数,满足的就相乘

下面是我的代码:

code:

#include <cstdio[......]

继续阅读

题目链接:http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=389#problem/C

坑爹的题,开始没有一点思路,别人的代码好诡异,看不懂,木办法自己想了一天才搞出来!

思路:用第一组数据建树,用第二组数据在已经建立好的树上进行修改,修改完后再遍历树,求像素!

#include <stdio.h>
#include <string.h>
#include <malloc.h>
int sum;
char *s;
typedef struct node
{
c[……]

继续阅读

link:http://acm.hdu.edu.cn/showproblem.php?pid=1166

今天初学线段树,看了几个讲义,找了道最基础的入门题做了一下,算是一边看讲义一边写代码啊,不过对它的建立,插入,查找过程有了初步的了解,题目中文,很好理解。做的过程中,一个问题老是困扰,就是在询问区间的时候,有一步是query(l,mid)&query(mid+1,r),我自己编的时候,按我的思想写成了query(l,mid)&query(mid,l),就是求两个区间的合并,可我的连编译都无法进行。。后来问人家说,这是把所有的都看成一个叶子点,最后的总和其实就是每个点的总[……]

继续阅读

Description

给出 N,B 和 D:找出 N 个编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位的“海明距离”(1 <= D <= 7)。“海明距离”是指对于两个编码,他们的二进制表示法中的不同二进制位的数目。看下面的两个编码 0x554 和 0x234 之间的区别(0x554 表示一个十六进制数,每个位上分别是 5,5,4): 0x554 = 0101 0101 0100 0x234 = 0010 0011 0100 不同的二进制位: xxx xx 因为有五个位不同,所以“海明距[……]

继续阅读

题目链接:
(SDIBT)
http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1499      
(FZU) 
http://acm.fzu.edu.cn/problem.php?pid=1759
题意描述:求A^B mod C,但是B的范围是1<=B<=10^1000000,是一个非常非常大的数。
题意分析:直接套用模板a^b%c是不行的。这个呢,有一个公式:a^b%c = a ^(b%eular(c)+eular(c)) % c,其中eular(c)是指c的欧拉函数,知道这个呢,用这个公式转化一下B,使B控制在lon[……]

继续阅读

link:http://poj.org/problem?id=2413

这题没什么难度,就是稍微繁琐一点罢了,题意就是给出两个数的范围,问在这

范围内的Fibonacci num有多少个,只是数据有点大,但是用大数可以解决。。

写这题的原因是因为在做的过程中一直有个地方不对,通过调试才知道strcmp的用法一直

没有搞清楚。。strcmp的比较原理是从首位开始比较,谁先大那么那个数就大,我一直认为的

是先比较字符串的长度,长度不同时长度长的大,长度相同的情况下再比较每位的大小。。原来是不比较长度的!!!

比如strcmp(“10″,”2”)应该为-1。。算是[……]

继续阅读

link:http://acm.hdu.edu.cn/showproblem.php?pid=2647

这题起初看没有什么难度,直接建表,然后进行减度比较钱数即可,对于

输出-1的情况实际就是判断是否存在环。。但下笔之后发现,题中n的范围是10000,如果

用数组的话肯定会超,所以就想到了换用链表去实现,想到这个问题也就好解决了。。

代码比较拙劣,仅供参考~~~

code:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100[……]

继续阅读

link:http://acm.hdu.edu.cn/showproblem.php?pid=1026

偶然做到这道题,发现是一个很好的搜索练习题,它不像以前那种广搜题,只让求出
最小值,这题在求出最小值的同时还必须输出其走的路劲,也就说要在搜索的同时进行记录。
题意很明确,从起点出发到终点所需的最短时间,'.'表能通过,'X'表示不能通过,'数字'
表示正在fight,其实这题难得就是如何去记录上一个路劲,我们可以利用结构体,在搜寻下一个
的同时,记录上一个的坐标即可~~有意者可以做一下~~~
下面是我的代码,仅供参考;
code:
#include <cstdio&g[......]

继续阅读