ACM136,关于等式
来源:互联网 发布:联想天工网络 编辑:程序博客网 时间:2024/05/16 12:00
题目:
等式
时间限制:1000 ms | 内存限制:10000 KB
难度:5
- 描述
有以下等式: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可能的取值种数
- 样例输入
137 29 41 43 47
- 样例输出
654
- 解题思路:一开始使用五个循环结果电脑直接卡住,由此可以看出这种方法的不可行性。而后采用把五个循环分为两个+3个循环的方式,再用数组存储相应的数。
- 该思路参考了别人的想法。
- #include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define size 25000000
short data[25000000];//50*50^3+50*50^3
int main()
{
int N=0;
printf("请输入测试多少组数据\n");
scanf("%d",&N);
while(N--)
{
int x1=0,x2=0,x3=0,x4=0,x5=0,y=0;
int a1=0,a2=0,a3=0,a4=0,a5=0;
int count=0;
memset(data,0,sizeof(data));
printf("请输入a1,a2,a3,a4,a5\n");
scanf("%d,%d,%d,%d,%d",&a1,&a2,&a3,&a4,&a5);
for(x1=-50;x1<=50;x1++)
{
if(x1==0)
continue;
for(x2=-50;x2<=50;x2++)
{
if(x2==0)
continue;//跳过
y=-1*(a1*x1*x1*x1+a2*x2*x2*x2);
if(y<0)y+=25000000;
data[y]++;//记录每个元素有多少个数
}
}
for(x3=-50;x3<=50;x3++)
{
if(x3==0)
continue;
for(x4=-50;x4<=50;x4++)
{
if(x4==0)
continue;
for(x5=-50;x5<=50;x5++)
{
if(x5==0)
continue;
y=a3*x3*x3*x3+a4*x4*x4*x4+a5*x5*x5*x5;
if(y<0)y+=25000000;
count+=data[y];
}
}
}
printf("有%d种方法\n",count);
}
return 0;
}
0 0
- ACM136,关于等式
- 等式
- 关于人与猪的等式
- 关于排列等式的两种解法
- 关于e的等式及相关证明
- 关于秩的等式与不等式总结
- 关于排列等式的解法扩展(复合)
- 等式问题
- 经典等式
- 代码等式
- 等式问题
- mod等式
- 除法等式
- 等式变换
- 求等式
- 等式数量
- 等式变换
- 代码等式
- Java关于RSA,DES加密解密的图形界面
- 笔记-第九周 多进程
- 文章放在隐藏类别中是否显示
- 将代码上传git@git.oschina.net出现Permission denied (publickey).
- 为什么日本德国没有一流互联网企业?
- ACM136,关于等式
- LeetCode|Valid Parentheses
- tomcat无法正常启动的原因
- UVA 818 Cutting Chains
- 欢迎使用CSDN-markdown编辑器
- 实例讲解C++ 双链表基本操作
- (转)回到顶部按钮
- [BZOJ1596][Usaco2008 Jan]电话网络(贪心||树形dp)
- 2878: [Noi2012]迷失游乐园 基环树+DP+概率与期望