哈希算法---Equations

本文深入探讨了哈希算法在处理和查找数据时的重要性,特别关注了Equations在哈希函数构造中的作用。通过实例解析,阐述了如何使用Equations优化哈希冲突,提高数据检索效率。同时,讨论了哈希算法在实际应用中的挑战和解决方案。
摘要由CSDN通过智能技术生成

All the problems in this contest totally bored you. And every time you get bored you like playing with quadratic equations of the form a*X  2 + b*X + c = 0. This time you are very curious to know how many real solutions an equation of this type has. 
Input
The first line of input contains an integer number Q, representing the number of equations to follow. Each of the next Q lines contains 3 integer numbers, separated by blanks, a, b and c, defining an equation. The numbers are from the interval  1000,1000 −1000,1000
Output
For each of the Q equations, in the order given in the input, print one line containing the number of real solutions of that equation. Print “INF” (without quotes) if the equation has an infinite number of real solutions. 
Sample Input
3
1 0 0
1 0 -1
0 0 0
Sample Output
1
2
INF


Time limit
1000 ms
Memory limit
65535 kB
OS
Windows
Status Accepted
Memory 1600kB
Length 621
Lang G++
Submitted
#include<iostream>
using namespace std;
int main()
{
	std::ios::sync_with_stdio(false);
	int Q;
	int a,b,c;
	while(cin>>Q)
	{
		for(int i=0;i<Q;i++)
		{
			cin>>a>>b>>c;
			if(a!=0&&b==0&&c==0)  			//x^2=0
				cout<<1<<endl;
			else if(a==0&&b!=0&&c!=0)		//x+c=0;
				cout<<1<<endl;
			else if(a==0&&b==0&&c!=0)		//c=0
				cout<<0<<endl;
			else if(a==0&&b==0&&c==0)		//0=0
				cout<<"INF"<<endl;
			else if(a==0&&(b==1||b==-1)&&c==0)		//x=0
				cout<<"INF"<<endl;
			else if((b*b-4*a*c)>0)
				cout<<2<<endl;
			else if((b*b-4*a*c)==0)
				cout<<1<<endl;
			else if((b*b-4*a*c)<0)
				cout<<0<<endl;
		}
	} 
	return 0;
}
   
   

sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。


失败返回0 ,否则返回格式化的参数个数
sscanf("1 2 3","%d %d %d",buf1, buf2, buf3); 成功调用返回值为3,即buf1,buf2,buf3均成功转换。
sscanf("1 2","%d %d %d",buf1, buf2, buf3); 成功调用返回值为2,即只有buf1,buf2成功转换。
(注意:此处buf均为地址)


1、一般用法
char buf[512] = ;
sscanf("123456 ", "%s", buf);
printf("%s\n", buf);
结果为:123456
2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf("123456 ", "%4s", buf);
printf("%s\n", buf);
结果为:1234
3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。
sscanf("123456 abcdedf", "%[^ ]", buf);
printf("%s\n", buf);
结果为:123456
4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf
5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
printf("%s\n", buf);
结果为:123456abcdedf
6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
结果为:12DDWDFF
7、给定一个字符串"hello, world",仅保留"world"。(注意:“,”之后有一空格)
sscanf(“hello, world”, "%*s%s", buf);
printf("%s\n", buf);
结果为:world
P.S. %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了,
如果没有空格则结果为NULL。[2] 


%[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
%[aB'] 匹配a、B、'中一员,贪婪性
%[^a] 匹配非a的任意字符,并且停止读入,贪婪性


可以用如下代码将字符串形式的ip地址转换为四个整数:


char * inputIp  
int ip[4];  
sscanf_s(inputIp, "%d.%d.%d.%d", &ip[0], &ip[1],&ip[2],&ip[3]);  





































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值