nyoj 136

news/2024/11/7 7:50:08/
题意:
描述

有以下等式:a1*x13+a2*x23+a3*x33+a4*x43+a5*x53=0

x1,x2,x3,x4,x5都就在区间[-50,50]之间的整数,且x1,x2,x3,x4,x5都不等于0.

问:给定a1,a2,a3,a4,a5的情况下,x1,x2,x3,x4,x5共有多少种可能的取值?

输入
第一行输入一个整数T(T<=10)表示测试数据的组数。
每组测试数据都只有一行,是5个整数,分表表示a1,a2,a3,a4,a5。(a1,a2,a3,a4,a5都在区间[-50,50]之间)
输出
对于每组数据输出一行,表示x1,x2,x3,x4,x5可能的取值种数
样例输入
1
37 29 41 43 47
样例输出
654

该问题不容易想到利用hash表,问题只要求解的个数,即(多少个x1-----x5)的组合,可以先把x1---x2的所有可能解写入hash表,然后在三重循环查找,注意找到了还要继续,记录个数。注意,可能会出现输入5个0的情况,该情况会导致超时(所有的0挂在一条链上),所有需要出掉重复的数字,在记录该数字出现的次数。

#include<stdio.h>
#include<string.h>
int H[300007];
struct con
{int value;int next;int count;	
}v[10010];
int main()
{int T=300007;int i,j,k,n,m,pos,next,hash,s,j_next;long long cnt;int a1,a2,a3,a4,a5;scanf("%d",&n);while(n--){scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5);pos=0;cnt=0;memset(H,-1,sizeof(H));memset(v,-1,sizeof(v));for(i=-50;i<=50;i++){if(i==0)continue;for(j=-50;j<=50;j++){if(j==0)continue;hash=s=-(i*i*i*a1+a2*j*j*j);if(hash<0)hash*=-103;hash%=T;j_next=H[hash];while(j_next!=-1){if(v[j_next].value==s){v[j_next].count++;break;}j_next=v[j_next].next;}if(j_next!=-1)continue;v[pos].value=s;v[pos].count=1;v[pos++].next=H[hash];H[hash]=pos-1;}}for(i=-50;i<=50;i++){if(i==0)continue;for(j=-50;j<=50;j++){if(j==0)continue;for(k=-50;k<=50;k++){if(k==0)continue;s=hash=i*i*i*a3+j*j*j*a4+k*k*k*a5;if(hash<0)hash*=-103;hash%=T;next=H[hash];while(next!=-1){if(v[next].value==s){cnt+=v[next].count;break;	}next=v[next].next;}}}}printf("%I64d\n",cnt);}
}




http://www.ppmy.cn/news/206498.html

相关文章

ZZNU2141: 2333

题目链接 2141: 2333 时间限制: 1 Sec 内存限制: 128 MB 提交: 119 解决: 34 [提交] [状态] [讨论版] [命题人:admin] 题目描述 “别人总说我瓜&#xff0c;其实我一点也不瓜&#xff0c;大多数时候我都机智的一批“ 宝儿姐考察你一道很简单的题目。给你一个数字串&#x…

nyoj216

A problem is easy时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述When Teddy was a child , he was always thinking about some simple math problems ,such as “What it’s 1 cup of water plus 1 pile of dough ..” , “100 yuan bu…

NYOJ116

NYOJ116 注意数组大小 #include <stdio.h> #include <math.h> #include <string.h> typedef struct STU{int grade;//不管是求区间最大值&#xff0c;还是次数&#xff0c;修改的都是grade&#xff0c;也就是grade的求法不同&#xff0c;比如这里是每一个节…

精挑细选 n 263

这题主要是使用一下#include<limits.h>&#xff0c;有点忘了&#xff0c;调了些时间啊&#xff0c;需要练习一下了 #include<stdio.h> #include<limits.h>int main() {int length, radius, data;int N, m;scanf("%d",&N);while(N--){length …

NYOJ 169

素数 时间限制&#xff1a; 3000 ms | 内存限制&#xff1a; 65535 KB 难度&#xff1a; 1 描述 走进世博园某信息通信馆&#xff0c;参观者将获得前所未有的尖端互动体验&#xff0c;一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现&#xff0c;从观众踏入展馆的第…

第234(22W+6)

豆豆早上好呀&#xff0c;昨天晚上跟外婆闹了&#xff0c;结论是我的妈妈是爱我的&#xff0c;豆豆的妈妈也是爱豆豆的&#xff0c;每个妈妈都爱自己的孩子都心疼自己的孩子咱们一家人要好好地幸福地过日子哦&#xff01; 明天就是周末了&#xff0c;麻麻一定不睡懒觉早点起来…

Nyoj 61

这个是双线程dp&#xff0c;第一次接触这种类型的题&#xff0c;参考别人的思想写的。 参考 #include <iostream> #include <cstring>using namespace std;int MAX(int a, int b) {return a > b ? a : b; }int main() {int T;int Graph[55][55];int row, col;…

161-169

注&#xff1a;以下问题的部分解析并非全部是自己原创&#xff0c;只是为了便于以后复习&#xff0c;直接粘贴总结的答案&#xff0c;主要来源是七月在线中的解析部分。https://www.julyedu.com/question/selectAnalyze/kp_id/4/cate/C 1、下面对于友元函数的描述正确的是&…