<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[Wigou&nbsp;Lau]]></title>
<link>http://blog.pfan.cn/liuwg</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[更改blog地址为blog.csdn.net/weiren2006]]></title>
		<link>http://blog.pfan.cn/liuwg/40194.html</link>
		<description><![CDATA[以后此blog不再更新，更多文章见blog.csdn.net/weiren2006]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2009-01-06 22:41:00</pubDate>
		</item>
				<item>
		<title><![CDATA[获取主机名和IP地址]]></title>
		<link>http://blog.pfan.cn/liuwg/29038.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp; 使用gethostname和gethostbyname这两个winsock库函数实现获得主机名和IP地址，其中Gethostname获得主机名，Gethostbyname获得主机地址。这两个函数的原型为:int gethostname (&nbsp; char FAR * name,&nbsp; &nbsp; int namelen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );获得主机名 char FAR * name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指针变量，存放主机名的数组int namelen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符串长度
struct hostent FAR * gethostbyname (&nbsp; const char FAR * name&nbsp; );通过主机名获取主机地址，此函数返回hostent结构体变量 const char FAR * name&nbsp;&nbsp;&nbsp; 就是主机名
hostent结构体struct hostent {&nbsp;&nbsp;&nbsp; char FAR *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h_name;&nbsp;&nbsp;&nbsp; char FAR * FAR * h_aliases;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h_addrtype;&nbsp;&nbsp;&nbsp; short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h_length;&nbsp;&nbsp;&nbsp; char FAR * FAR * h_addr_list;};
其中，&nbsp; char *h_name 表示的是主机的规范名。例如 www]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-09-01 15:49:00</pubDate>
		</item>
				<item>
		<title><![CDATA[map的使用]]></title>
		<link>http://blog.pfan.cn/liuwg/29021.html</link>
		<description><![CDATA[当我们遇到字符串与整数的映射关系时，用map使用很方便，所以我就整理了一些关于map的使用方法：1、map的头文件是map.h2、map的定义&nbsp;&nbsp; 如map&lt;string,int&gt;word,这样就定义了map的字符串到整数的对象word（就对象名），也可以定义整数到字符串的对象，具体看什么情况。注意定义时不能用char*。具体例子如下：map&lt;string,int&gt;age;&nbsp; //定义姓名到年龄的映射age["zhangsan"]=20;age["lisi"]=21;下面介绍map的一些函数：1、clear()就是清除map对象的所有内容如age.clear();这样就清楚了age的内容2、erase(key)删除key对应的元素如age.erase("lisi");就删除了lisi的信息3、size()获取对象的元素个数如n=age.size();则n=2（上面定义了2个元素）;4、begin()获取对象的第一个元素的指针5、end()获取对象的最后一个元素的指针6、find(key)查找key对应的元素如typedef&nbsp;&nbsp; map&lt;string,int&gt;maps;maps age;maps::iterator it;it=age.find("wangwu");如果找到"wangwu"的元素，就返回它所对应的元素指针,否则就指向end();7、元素的访问或遍历举例typedef&nbsp;&nbsp; map&lt;string,int&gt;maps;maps age;age["zhangsan"]=20;age["lisi"]=21;maps::iterator it;for(it=age.begin();it!=age.end();it++){&nbsp;&nbsp;&nbsp; cout&lt;&lt;"name:"&lt;&lt;it-&gt;first&lt;&lt;"&nbsp; age:"&lt;&lt;it-&gt;second&lt;&lt;endl;&nbsp; &nbsp;&nbsp; //显示各元素的值,first为string的内容，second为int的内容}最后输出为name:zhangsan&nbsp; age:20name:lisi&nbsp;]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-31 18:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[matlab的几个插值函数]]></title>
		<link>http://blog.pfan.cn/liuwg/28904.html</link>
		<description><![CDATA[已知向量x,y,通过x,y求出向量xi的插值的值1、分段线性插值yi=interp1(x,y,xi)或yi=interp1(x,y,'linear')2、多项式插值多项式为y=p(1)*x+p(2)*x^2+...+p(n)*x^n,则可以用p=polyfit(x,y,n)，（n是多项式的最高次数）求出系数向量p,然后用y=polyval(p,xi)求出向量xi的函数值y3、三次样条插值yi=interp1(x,y,xi,'spline')或yi=spline(x,y,xi)或pp=interp1(x,y,'spline','pp')，然后pp=spline(x,y)--&gt;yi=ppval(pp,xi)4、分段三次埃尔米特yi=interp1(x,y,xi,'pchip')或yi=pchip(x,y,xi)或pp=interp1(x,y,'pchip','pp')&nbsp; pp=pchip(x,y)--&gt;yi=pppval(pp.xi)]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-28 12:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku1218]]></title>
		<link>http://blog.pfan.cn/liuwg/28637.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int sum,n,i,j,k,T;
	bool lock[101];
	cin&gt;&gt;T;
	while(T--)
	{
		while(cin&gt;&gt;n)
		{
			sum=0;
			memset(lock,false,sizeof(lock));
			for(i=1;i&lt;=n;i++)
			{
				k=i;
				for(j=2;k&lt;=n;j++)
				{
					lock[k]=!lock[k];
					k=i*j;
				}
				sum+=lock[i];
			}
			cout&lt;&lt;sum&lt;&lt;endl;
		}
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:20:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2696]]></title>
		<link>http://blog.pfan.cn/liuwg/28636.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int a[9],f[1000],n,i;
	cin&gt;&gt;n;
	while(n--)
	{
		for(i=0;i&lt;9;i++)
			cin&gt;&gt;a[i];
		f[0]=a[0];f[1]=a[1];f[2]=a[2];
		for(i=3;i&lt;=a[8];i++)
		{
			if(i%2)
			{
				f[i]=(a[3]*f[i-1]+a[4]*f[i-2]-a[5]*f[i-3])%a[6];
				if(f[i]&lt;0)
			    	f[i]+=a[6];
			}
			else
			{
				f[i]=(a[5]*f[i-1]-a[3]*f[i-2]+a[4]*f[i-3])%a[7];
				if(f[i]&lt;0)
			    	f[i]+=a[7];
			}
		}
		cout&lt;&lt;f[a[8]]&lt;&lt;endl;
		
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:20:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2608]]></title>
		<link>http://blog.pfan.cn/liuwg/28635.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int i,k,l;
	char ch[21];
	while(cin&gt;&gt;ch)
	{
		int a[26]={0,1,2,3,0,1,2,
			0,0,2,2,4,5,5,
			0,1,2,6,2,3,
			0,1,0,2,0,2};
		k=ch[0]-'A';
		if(a[k])
			cout&lt;&lt;a[k];
		i=1;
		while(ch[i]!='\0')
		{
			k=ch[i]-'A';
			l=ch[i-1]-'A';
			if(a[k]&amp;&amp;(a[k]!=a[l]))
			{
				cout&lt;&lt;a[k];
			}
			i++;
		}
		cout&lt;&lt;endl;
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:19:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku1579]]></title>
		<link>http://blog.pfan.cn/liuwg/28634.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int a,b,c,w[21][21][21],i,j,k,m;
	for(i=0;i&lt;21;i++)
		for(j=0;j&lt;21;j++)
			for(k=0;k&lt;21;k++)
			{
				if(i==0||j==0||k==0)
					w[i][j][k]=1;
				else if(i&lt;j&amp;&amp;j&lt;k)
					w[i][j][k]=w[i][j][k-1]+w[i][j-1][k-1]-w[i][j-1][k];
				else
					w[i][j][k]=w[i-1][j][k]+w[i-1][j-1][k]+w[i-1][j][k-1]-w[i-1][j-1][k-1];
			}
	while(cin&gt;&gt;a&gt;&gt;b&gt;&gt;c)
	{
		if(a==-1&amp;&amp;b==-1&amp;&amp;c==-1)
			break;
		
		if(a&lt;=0||b&lt;=0||c&lt;=0)
			m=1;
		else if(a&gt;20||b&gt;20||c&gt;20)
			m=w[20][20][20];
		else m=w[a][b][c];
		printf("w(%d, %d, %d) = %d\n",a,b,c,m);

	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:19:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2140]]></title>
		<link>http://blog.pfan.cn/liuwg/28633.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
#include&lt;cmath&gt;
using namespace std;
int main()
{
	int n,k,i,sum;
	while(cin&gt;&gt;n)
	{
		sum=0;
		k=sqrt(2*n);
		if(k*(k+1)/2&lt;n)
			k++;
		for(i=1;i&lt;=k;i++)
		{
			if((n-i*(i-1)/2)%i==0)
				sum++;
		}
		cout&lt;&lt;sum&lt;&lt;endl;
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:18:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2196]]></title>
		<link>http://blog.pfan.cn/liuwg/28632.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int duodecimal[]={1728,144,12,1},hexadecimal[]={4096,256,16,1},decimal[]={1000,100,10,1},
		i,j,m10,m12,m16,n1,n2,n3;
	for(i=2992;i&lt;9999;i++)
	{
		m10=m12=m16=0;
		n1=n2=n3=i;
		for(j=0;j&lt;4;j++)
		{
			m10+=n1/decimal[j];
			m12+=n2/duodecimal[j];
			m16+=n3/hexadecimal[j];
			n1=n1%decimal[j];
			n2=n2%duodecimal[j];
			n3=n3%hexadecimal[j];
		}
		if(m10==m12&amp;&amp;m10==m16)
			cout&lt;&lt;i&lt;&lt;endl;
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:17:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2105]]></title>
		<link>http://blog.pfan.cn/liuwg/28631.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int IP[]={128,64,32,16,8,4,2,1};
	int n,i,j,k,decIP[4];
	char binIP[33];
	cin&gt;&gt;n;
	for(i=0;i&lt;n;i++)
	{
		memset(decIP,0,sizeof(decIP));
		cin&gt;&gt;binIP;
		for(j=0;j&lt;4;j++)
		{
			for(k=0;k&lt;8;k++)
			{
				if(binIP[j*8+k]=='1')
					decIP[j]+=IP[k];
			}
			if(j&gt;0)
	    		cout&lt;&lt;'.'&lt;&lt;decIP[j];
			else
				cout&lt;&lt;decIP[j];
		}
		cout&lt;&lt;endl;
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:16:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2656]]></title>
		<link>http://blog.pfan.cn/liuwg/28630.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int n,s[7][2],i,k,m;
	while(cin&gt;&gt;n)
	{
		if(n==0)
			break;
		m=0;
		for(i=0;i&lt;n;i++)
		{
			cin&gt;&gt;s[i][0]&gt;&gt;s[i][1];
			if(m&lt;(s[i][0]+s[i][1]))
			{
				m=s[i][0]+s[i][1];
				k=i;
			}
		}
		if(m&gt;8)
			cout&lt;&lt;k+1&lt;&lt;endl;
		else
			cout&lt;&lt;'0'&lt;&lt;endl;
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:15:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2470]]></title>
		<link>http://blog.pfan.cn/liuwg/28629.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
#define max 100001
int main()
{
	int n,data1[max],data2[max],i,flag;
	while(scanf("%d",&amp;n)!=EOF)
	{
		if(n==0)
			break;
		for(i=1;i&lt;=n;i++)
		{
			scanf("%d",&amp;data1[i]);
			data2[data1[i]]=i;
		}
		flag=0;
		for(i=1;i&lt;=n;i++)
		{
			if(data1[i]!=data2[i])
			{
				flag=1;
				break;
			}
		}
		if(flag)
			printf("not ambiguous\n");
		else
			printf("ambiguous\n");
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:14:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2403]]></title>
		<link>http://blog.pfan.cn/liuwg/28628.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
#include&lt;cstring&gt;
using namespace std;
#define max 1000
int main()
{
	int n,m,i,j,sum,value[max];
	char job[max][17],str[100];
	while(cin&gt;&gt;n&gt;&gt;m)
	{
		for(i=0;i&lt;n;i++)
		{
			cin&gt;&gt;job[i];
			cin&gt;&gt;value[i];
		}
		for(i=0;i&lt;m;i++)
		{
			sum=0;
	    	while(cin&gt;&gt;str)
			{
				if(str[0]=='.')
					break;
				for(j=0;j&lt;n;j++)
				{
					if(strcmp(str,job[j])==0)
						sum+=value[j];
				}
			}
			cout&lt;&lt;sum&lt;&lt;endl;
		}
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:14:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku3219]]></title>
		<link>http://blog.pfan.cn/liuwg/28627.html</link>
		<description><![CDATA[#include &lt;stdio.h&gt;
int F(int n)
{ //n! = 2^k * k! * a  
 //k = n / 2, a不含因子2
 
	int sum = 0;
	while(n &gt;= 2)
	{
		sum += n / 2; 
		n /= 2;
	}
	return sum;
}

int main(void)
{
	int n, k;
	while(EOF != scanf("%d%d", &amp;n, &amp;k))
	{	 
		if(F(n) &gt; F(n - k) + F(k))
		   printf("0\n");
    	else
    	   printf("1\n");
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:13:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2242]]></title>
		<link>http://blog.pfan.cn/liuwg/28626.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
#include&lt;cmath&gt;
using namespace std;
#define pi 3.141592653589793
int main()
{
	double x1,y1,x2,y2,x3,y3,a,b,c,l,s,r,L;
	while(cin&gt;&gt;x1&gt;&gt;y1&gt;&gt;x2&gt;&gt;y2&gt;&gt;x3&gt;&gt;y3)
	{
		a=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
		b=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
		c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
		l=(a+b+c)/2;
		s=sqrt(l*(l-a)*(l-b)*(l-c));
		r=(a*b*c)/(4*s);
		L=2*pi*r;
		printf("%.2f\n",L);
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:12:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2027]]></title>
		<link>http://blog.pfan.cn/liuwg/28625.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int n,x,y;
	cin&gt;&gt;n;
	while(n&gt;0)
	{
		n--;
		cin&gt;&gt;x&gt;&gt;y;
		if(x&gt;=y)
			cout&lt;&lt;"MMM BRAINS\n";
		else
			cout&lt;&lt;"NO BRAINS\n";
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:11:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku2017]]></title>
		<link>http://blog.pfan.cn/liuwg/28624.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
using namespace std;
int main()
{
	int n,s,t,t0,i,sum;
	while(cin&gt;&gt;n)
	{
		if(n==-1)
			break;
		sum=0;
		t0=0;
		for(i=0;i&lt;n;i++)
		{
			cin&gt;&gt;s&gt;&gt;t;
			sum+=s*(t-t0);
			t0=t;
		}
		cout&lt;&lt;sum&lt;&lt;" miles\n";
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:11:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku1731]]></title>
		<link>http://blog.pfan.cn/liuwg/28623.html</link>
		<description><![CDATA[#include&lt;iostream&gt;
#include&lt;string&gt;
#include&lt;algorithm&gt;
using namespace std;
int main()
{
	string s;
	while(cin&gt;&gt;s)
	{
		sort(s.begin(),s.end());
		cout&lt;&lt;s&lt;&lt;endl;
		while(next_permutation(s.begin(),s.end())) {
			cout&lt;&lt;s&lt;&lt;endl;
		}
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-18 20:10:00</pubDate>
		</item>
				<item>
		<title><![CDATA[pku1844]]></title>
		<link>http://blog.pfan.cn/liuwg/28609.html</link>
		<description><![CDATA[#include&lt;stdio.h&gt;#include&lt;math.h&gt;int main(){int n,i,sum;while(scanf("%d",&amp;n)!=EOF){&nbsp;&nbsp; i=(sqrt(1+8*n)-1)/2;&nbsp;&nbsp; sum=(i+1)*i/2;&nbsp;&nbsp; while(sum&lt;n) sum+=++i;&nbsp;&nbsp; if((sum-n)%2==0) printf("%d\n",i);&nbsp;&nbsp; else printf("%d\n",i&amp;1?i+2:i+1);}return 0;}
或者：#include&lt;iostream&gt;
#include&lt;cmath&gt;
using namespace std;
int main()
{
	int s,n,t;
	while(cin&gt;&gt;s)
	{
		n=sqrt(s*2);
		t=(n+1)*n/2;
		if(t&lt;s)
		{
			n++;
			t+=n;
		}
		if((t-s)%2==0)
		{
			cout&lt;&lt;n&lt;&lt;endl;
		}
		else
		{
			if(n%2==0)
	    		cout&lt;&lt;n+1&lt;&lt;endl;
			else
				cout&lt;&lt;n+2&lt;&lt;endl;
		}
	}
	return 0;
}]]></description>
		<author><![CDATA[weiren]]></author>
		<pubDate>2007-08-17 23:39:00</pubDate>
		</item>
		</channel>
</rss>