博文
赋值语句作为循环条件的问题(2005-08-20 20:12:00)
摘要:吃惊中,我以为这个应该是无限的原来表达式 x = y 的值就是 x 的值啊(赋值成功,若赋值不成功呢?)---------------------------------#include void main(){ int x = 3, y = 2; while(x = y){ printf("x = %d\ty = %d\t(x = y) = %d", x, y, x = y); y--; printf("#\n"); continue; }}该程序输出结果为:x = 2 y = 2 (x = y) = 2#x = 1 y = 1 (x = y) = 1#说明循环体执行了两次......
计算某一天在该年中的天数(2005-08-20 19:03:00)
摘要:int dayChange(int year, int month, int day){ int days[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; int d = days[month - 1] + day; //润年2月以后多加一天 if(month > 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))d++; return d;}......
(转)满足任意精度的概率事件发生器(2005-08-20 16:43:00)
摘要:rickone 的 BLOG
http://programfan.com/blog/article.asp?id=3860
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
#define MinProb 3.05185094759972e-5
bool happened(double probability)//probability 0~1
{
if(probability<0)return false;
if(probability<MinProb)
return rand()==0&&happened(probability/MinProb);
if(rand()<=probability*RAND_MAX)
return true;
return false;
}
MinProb是理论上的最小发生概率,为什么会这样,因为计算机是离散的,它永远只能得到有限范围内的随机离散数。
bool happened(double probability);
是按概率probability发生的随机事件发生器,如当probability=0.5时,将等概率得到真或者假,当为其它值时,将按probability的概率得到真,以1-probability的概率得到假。
如果probability比较大,MinProb是足够精确的,如0.5和0.5000001是有足够精确相等的,它相当于一个大概率加一个小概率,小概率被‘吃’掉了。
而小概率事件单独发生能不能突破MinProb的极限呢?
我昨天睡觉的时候想出来了这样的算法,从理论上是可以无限精确的,即任意小的小概率事件都可以得到。
其实原理非常简单,即独立事件同时发生的概率等于各事件的概率之积。举个例子:......
产生任意范围内的等概率随机数(2005-08-20 16:43:00)
摘要:C提供的标准随机函数是 rand(),返回 0 ~ RAND_MAX,共 RAND_MAX + 1 个随机数,如果我需要更大的随机数范围应如何做?
而且 rand() 返回的是伪随机数,就是说不管运行多少次结果都是一样。用srand() 解决。
试设计:
long random(long n);返回 0 ~ n-1 间的等概率随机数
分析思路:
以 0 ~ 1的等概率为中介,先将 rand() 返回的概率数转化到 0 ~ 1 之间,在转化到 0 ~ n 之间。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
long random(long n)
{
double r = (double)rand() / RAND_MAX;
return (long)(r * n);
}
int main()
{
long n, t1 = 0, t2 = 0;
while(true){
printf("输入 n 值:");
scanf("%ld", &n);
srand(time(NULL));
for(int i = 0;i < n * 100;i++){
long t = random(n);
if(t == 1)t1++;
else if(t == n - 1)t2++;
}
printf("出现次数\n");
p......
一道算法题(2005-08-20 20:17:00)
摘要:ilpr 8月17日 发布 http://programfan.com/club/showbbs.asp?id=98465&page=1
例如整数121,如何实现1-10十个数字,在不重复使用的情况下,分成5组,两两一组相乘,然后等到的五个积相加,和等于121!用什么算法求出这五组组合!
--------------------------------------
rickone 的算法(8月18日)
#include#includeint s[10];int v[11];void dfs(int c, int ob){ int i; if(c == 10){ int sum = 0; for(i = 0;i < 10;i += 2) sum += s[i]*s[i+1];
if(sum == ob){ //输出组合 for(i = 0;i < 10; ++i) cout<......
完美正方形(2005-08-20 20:17:00)
摘要:完美正方形的意思就是:把一个大的正方形分割成若干个大小不相等的小正方形
请用程序画出一个完美正方形来
这个程序该怎么写呢?
以下是一个图例 还有很多种解法 谁会写贴出来啊 想了好多天了
http://img131.photo.163.com/billgacsli/14264265/340082705.gif
完全正方形
正方形是每一個人都非常熟悉的圖形,其中卻隱藏了一個奇妙的“數學之謎”:
問題:用一些互不相等的小正方形,能夠拼出一個大正方形嗎?
在數學上這個大正方形稱之為完全正方形,要作出一個完全正方形可不是一件容易的事。
1930年蘇俄數學家魯金認為這種完全正方形不存在。
1939年sprague 造出第一個完全正方形,它是由55個小正方形組成,邊長為4205單位。
1939年英國劍橋大學四個學生Brooks, Smith, Stone, Tutteru.就曾經沉迷於此問題,花了一段很長的時間,最後在理論的指導下,找出了由28個小正方形組成的完全正方形,邊長為1015單位。
1948年Wilvocks 造出一個由24個小正方形組成的完全正方形,邊長為175單位。至目前為止已經出爐2000多個24階完全正方形。
1967年Wilvocks 造出一個由25個及26個小正方形組成的完全正方形。
1976年荷蘭的數學家Duijvestijn更在電子計算機的幫助下,又發現一個由21個小正方形組成的完全正方形,邊長為112單位。並且證明,它是由最少數目的小正方形組成的完全正方形。
完美正方形的研究並未到此結束,一方面,上面這一些結果的發現或證明都要藉助於電腦,導出這些結果的初等證明是非常有意義的。另一方面,人們還沒有發現究竟哪些正方形是完全正方形?或者說沒有給出一個判斷一個正方形是完全正方形的標準,比如說完全正方形的最小整數邊長是多少?對於哪些正整數r存在r階完全正方形?是否存在22階完全正方形?這些都有待人們繼續研究。
......
QQ“缘”病毒清理记(2005-08-17 23:01:00)
摘要:
中着过程:
一个网友发送了如下消息,点击后即中着。
“今天在网上下了本电子书,书名叫《缘》,写得不错,而且书的作者的名字很巧…………点击下面这个地址可以下载这本书”
中着表现:
qq聊天异常,有时会不知不觉中给好友发送类似信息;
IE首页尽管意设置为blank,但启动IE时仍会出现19ku.com网站。另外在弹出一个窗口,××××,什么免费电影什么的。
根据“详解六大QQ病毒特征及清除方法”提供的方法安步就班操作
首先查找noteped.exe,没查到。到windows目录下一看,有两个notepad.exe,遂怀疑其中一个必有问题,双击运行,果然有个就是当时中招时的反映。正常notepad大小为64.5KB,版本号为5.1.2600.0;而其大小仅为18.5KB,版本号为4.1.0.4600,创建日期即为中招日期,而正常的notepad.exe的创建日期应为装操作系统的日期。而且,图标亦有所不同。遂肯定之,删之。
system目录下亦然,删之notepad.exe(同上)。同时,发现两个可疑文件,创建日期是中招日(2005-8-14),文件名为:ccevt.exe(18.0KB)、wsetdll.exe(18.5KB),版本号均为4.1.0.4600。亦删之,wsetdll.exe删除失败,发现任务管理器里正在运行,结束之并重新删除。taskmgr.exe文件并未发现。
system32目录下亦然。有连个notepad.exe文件,删除其中一个notepad.exe(创建日期及版本号均相同,且大小为18.5KB)。
运行regedit,在HKey_Local_Machine\software\Microsoft\windows\CurrentVersion\Run下将wsetdll.exe项删除。同时也删除了ccevt.exe
至此,删除完毕
重启……
搞定!
收工!......
(转)详解六大QQ病毒特征及清除方法(二)(2005-08-17 22:33:00)
摘要:四、“武汉男生”病毒 病毒特性: 此病毒是“武汉男生”的一系列新变种,病毒发作后会利用QQ聊天工具进行传播,定时给QQ网友发送包含网址的信息来诱使用户点击,该网页利用了IE的Object Data漏洞下载并运行病毒本身,该漏洞是由HTML中OBJECT的DATA标签引起的。对于DATA所标记的URL,IE会根据服务器返回的HTTP头来处理数据。如果HTTP头中返回的URL类型Content-Type是Application/hta,那么该URL指定的文件就能够执行,无论IE设置的安全级别有多高。 该变种较明显的特点是,病毒运行后,除定时发给QQ网友同样的网址外还会趁机盗取“传奇”游戏的帐户、密码以及其他信息,并以邮件形式发给盗密码者,还会结束多种反病毒软件,以保护自身不被清除。 (1)如果点击病毒网页,将会显示美女图片,而同时弹出一个标题为“asp空间”的不可见窗口。此网页利用IE漏洞,下载并运行leoexe.gif和leo.asp文件,其中leoexe.gif并不是图像文件,而是exe类型的病毒体,leo.asp是病毒释放器; (2)病毒一旦运行,将结束大部分杀毒软件、防火墙以及某些病毒专杀工具; (3)每隔一段时间给QQ网友发送信息 (4)病毒运行后会复制自身到系统目录下,文件名是updater.exe、Systary.exe、sysnot.exe,并在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices中添加:“windows update” = “%安装目录%\system\updater.exe” %安装目录% 是Windows 系统的安装目录,在不同系统下该目标表现可能不同,可能的有:c:\windows;c:\winnt 等。 (5)修改文本文件(*.txt)关联和可执行文件关联,直接指向病毒本身,如果用户运行任意的txt文件和exe文件都会激活病毒。 (6)病毒会在计算机中搜索传奇游戏的帐户、密码以及其他信息,发送到指定的E-Mail信箱。 清除病毒 1、删除病毒在系统目录下释放的病毒文件 2、删除病毒在注册表下生成的键值 3、运行杀毒软件,对病毒进行全面清除 五、“爱情森林”病毒 (一)病毒特征 该木马程序原始文......
(转)详解六大QQ病毒特征及清除方法(一)(2005-08-22 10:59:00)
摘要:来源:http://www.qqday.com/Article/qqmiji/fangfanjiqiao/200505/154.html
一、“QQ尾巴”病毒
病毒主要特征
这种病毒并不是利用QQ本身的漏洞 进行传播。它其实是在某个网站首页上嵌入了一段恶意代码,利用IE的iFrame系统漏洞自动运行恶意木马程序,从而达到侵入用户系统,进而借助QQ进行垃圾信息发送的目的。用户系统如果没安装漏洞补丁或没把IE升级到最高版本,那么访问这些网站的时候其访问的网页中嵌入的恶意代码即被运行,就会紧接着通过IE的漏洞运行一个木马程序进驻用户机器。然后在用户使用QQ向好友发送信息的时候,该木马程序会自动在发送的消息末尾插入一段广告词,通常都是以下几句中的一种。
QQ收到信息如下:
1. HoHo~~ http://www.mm**.com刚才朋友给我发来的这个东东。你不看看就后悔哦,嘿嘿。也给你的朋友吧。
2. 呵呵,其实我觉得这个网站真的不错,你看看http://www.ktv***.com/
3. 想不想来点摇滚粗口舞曲,中华 DJ 第一站,网址告诉你http://www.qq33**.com.。不要告诉别人 ~ 哈哈,真正算得上是国内最棒的 DJ 站点。
4. http//www.hao***.com 帮忙看看这个网站打不打的开。
5. http://ni***.126.com 看看啊. 我最近照的照片~ 才扫描到网上的。看看我是不是变了样?
清除方法
1.在运行中输入MSconfig,如果启动项中有“Sendmess.exe”和“wwwo.exe”这两个选项,将其禁止。在C:\WINDOWS一个叫qq32.INI的文件,文件里面是附在QQ后的那几句广告词,将其删除。转到DOS下再将“Sendmess.exe”和“wwwo.exe”这两个文件删除。
2.安装系统漏洞补丁
由病毒的播方式我们知道,“QQ尾巴”这种木马病毒是利用IE的iFrame传播的,即使不执行病毒文件,病毒依然可以借由漏洞自动执行,达到感染的目的。因此应该敢快下载IE的iFrame漏洞补丁。
二、QQ“缘”病毒
病毒特征:
该病毒用VB语言编写,采用ASPack压缩,利用QQ消息传播。运行后会将IE默认首页改变为......
数的拆分问题(2005-08-17 18:39:00)
摘要:把任意一个整数n>3,如何拆分才能让(不能重复)而且分开后所有数的和等于原数,而且能组合出任意一个数例如把100拆分,拆分后的数和等于100,而且能组成1~100之间的任意一个数 以下是我的程序#include using namespace std;int main(){ int m = k = 1, n; cin >> n; while(m < n){ cout << k << " "; k *= 2; m += k; } cout << n - k + 1; system("pause");}......
