2012年10月1日
摘要: 原型:extern char *strchr(const char *s,char c); const char *strchr(const char* _Str,int _Val) char *strchr(char* _Str,int _Ch) 头文件:#include <string.h> 功能:查找字符串s中首次出现字符c的位置 说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。 返回值:Returns the address of the first occurrence of the character in the string if successf 阅读全文
posted @ 2012-10-01 15:51 @ 小浩 阅读(278) 评论(0) 推荐(0) 编辑
  2012年9月28日
摘要: 此题思路参照杭电2031,相比之下此题更简单了!呵呵!(知道注意求几进制就用10进制数除以几把所求的余数存到一个数组里就行了!同时也要记下整除后的结果,用整除后的结果接着求余!!直到整出后的结果为0为止!)#include<iostream>using namespace std;int main(){int n,a[10000],i=0,j,m;while(cin>>n){ i=0; m=n;while(m!=0){ a[i]=m%2; m=m/2; i++;}for(j=i-1;j>=0;j--) cout<<a[j];cout<<en 阅读全文
posted @ 2012-09-28 09:45 @ 小浩 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 此题的方法是:假如是从小到大的排序,每相邻的两个数进行比较,每当前一个数比后一个数打的时候,就把他们交换,这样最后一个数就是这些数中最大的,以此类推,就将一些无序的数从小到大排好序了!#include<iostream>using namespace std;int main(){int i,j,a[10],n;for(i=0;i<10;i++)cin>>a[i];for(i=0;i<10;i++) for(j=0;j<9-i;j++){if(a[j]>a[j+1]){ n=a[j];a[j]=a[j+1];a[j+1]=n;}}for(i=0; 阅读全文
posted @ 2012-09-28 09:34 @ 小浩 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 此种排序方法的思路是:从第一个数开始,令他和他后面的数逐一比较,假如是从小到大排列,只要后面的数有比第一个数小的就和第一个数交换,这样就保证了第一个数是最小的,然后再从第2个数接着排,这样就把一排无序的数给从小到大的排出来了!do you know#include<iostream>using namespace std;int main(){int i,j,a[10],n;for(i=0;i<10;i++)cin>>a[i]; for(i=0;i<10;i++) { for(j=i;j<10;j++) if(a[i]>a[j]){ n=a[i] 阅读全文
posted @ 2012-09-28 09:26 @ 小浩 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 神、上帝以及老天爷啊!就为了张Twins的签名照就这么大费周章的。唉~现在的年轻人啊。N张票的所有排列可能自然是Ann = N!种排列方式现在的问题就是N张票的错排方式有几种。首先我们考虑,如果前面N-1个人拿的都不是自己的票,即前N-1个人满足错排,现在又来了一个人,他手里拿的是自己的票。只要他把自己的票与其他N-1个人中的任意一个交换,就可以满足N个人的错排。这时有N-1种方法。另外,我们考虑,如果前N-1个人不满足错排,而第N个人把自己的票与其中一个人交换后恰好满足错排。这种情况发生在原先N-1人中,N-2个人满足错排,有且仅有一个人拿的是自己的票,而第N个人恰好与他做了交换,这时候就满 阅读全文
posted @ 2012-09-28 09:04 @ 小浩 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 此题是一道简单的画图题!!只要掌握规律还是很容易的!呵呵!!首先注意输入的是 长n 高m,还有就是注意‘+“号就行了!#include<iostream>using namespace std;int main(){int n,m,i,j;while(cin>>n>>m){for(i=0;i<m+2;i++){ for(j=0;j<n+2;j++){if(i==0&&j==0||i==0&&j==n+1||i==m+1&&j==0||i==m+1&&j==n+1)cout<&l 阅读全文
posted @ 2012-09-28 08:47 @ 小浩 阅读(305) 评论(0) 推荐(0) 编辑
  2012年9月25日
摘要: 此题也是一道组合数递推问题,递推规律同2048,记住规律仍然是a[i]=(i-1)*(a[i-1]*a[i-2]);只是最后乘以组合数Cmn #include<iostream>using namespace std;int main(){int n,c,b,i;__int64 a[25],d,e,r,f;cin>>n;getchar();while(n--){d=1; e=1; cin>>c>>b; a[1]=0; a[2]=1; a[3]=2; for(i=4;i<=b;i++) a[i]=(i-1)*(a[i-2]+a[i-1]); 阅读全文
posted @ 2012-09-25 20:38 @ 小浩 阅读(562) 评论(0) 推荐(0) 编辑
  2012年9月24日
摘要: 问题分析:此题也是一道递推问题!首先,当m=4的时候 例如 {1 2 3 4 其中当1取2的时候 1 2 3 4}此时如果2取1,则只能3和4互相交换({3 4 相当于a[2]的值)!如果2取3或4,则剩余{3 4 3 4} 1 4}此时相当于{1 2 3 中1取2剩余的情况!!依次类推 b=(double)1/(i-1)*a[i-2]+(double)(i-2)/(i-1)*Q; 1 2 3} a[i]=(double)(i-1)/i*b; #include<iostream>using namespace std;int main(){int n,m,i;double a[25 阅读全文
posted @ 2012-09-24 18:13 @ 小浩 阅读(488) 评论(0) 推荐(0) 编辑
  2012年9月23日
摘要: 此题思路:先求直线最多能把平面分成多少个部分设为m个!(m=a[i-1]+i;)再求折线把平面分的个数n(n=a[2*m]-2*m;)*注意:一个折线两条直线!!!#include<iostream>using namespace std;int main(){int n,m,i;__int64 a[20005];cin>>n;getchar();while(n--){cin>>m;a[1]=2;a[2]=4;for(i=3;i<=m*2;i++) a[i]=a[i-1]+i; a[2*m]=a[2*m]-m*2;printf("%I64d\ 阅读全文
posted @ 2012-09-23 20:59 @ 小浩 阅读(359) 评论(1) 推荐(0) 编辑
  2012年9月22日
摘要: 做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。 那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了。不同的编译器对64位整数的扩展有所不同。基于ACM的需要,下面仅介绍VC6.0与g++编译器的扩展。 VCVC6.0的64位整数分别叫做__int64与unsigned __int64,其范围分别是[-2^63, 2^6.. 阅读全文
posted @ 2012-09-22 11:19 @ 小浩 阅读(1192) 评论(0) 推荐(0) 编辑