| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 836 人关注过本帖
标题:谁能看看这道题?
只看楼主 加入收藏
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
谁能看看这道题?
方程的解
Description

要求Xi(i = 1,2,3,4)是一个[-T..T]中的整数,满足方程AX1 + BX2 + CX3 + DX4 = P的解有多少组?


Input
一行包含六个整数,分别表示P、T、A、B、C、D。

|P| < 109

|A| < 104

|B| < 104

|C| < 104

|D| < 104

0 <= T <= 500

 


Output


      一行一个整数,表示方程的解的个数。


Sample Input

0 10 -1 -1 0 -1


Sample Output

6951


Source

搜索更多相关主题的帖子: 104 
2010-05-30 19:09
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:4 
#include<stdio.h>
void main()
{
    int i,A,B,C,D;
    for(i=5000;i<=10000;i++)
    for(A=0;A<=4;A++)
    for(B=0;B<=4;B++)
    for(C=0;C<=4;C++)
    for(D=0;D<=4;D++)
    if(i==A*780+B*990+C*1230+D*1000)
    printf("n=%d,A=%d,B=%d,C=%d,D=%d\n",i,A,B,C,D);
   
}
改一下相应的数值,再加三个for循环就行了呗!

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-05-30 19:18
想思
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2010-5-30
收藏
得分:4 
希望大家多多关照!!!!

谢谢解答::::
函数f()、g()的定义如下所示。已知调用f()时传递给其形参x的值是1,若以传值 主式调用g,则函数f的返回值为__3___;若以传引用方式调用g,则函数f的返回值为___4___;
f(int x)      g(int y)
{int a=5;     {y=y+1;
a=g(x);        return y;
return a+x:    }
}
这是软考的题目2010年上午   41)题的题目!!!!
我不知道为什么等4( 若以传引用方式调用g,则函数f的返回值为___4___;)
2010-05-30 20:15
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
以下是引用myhnuhai在2010-5-30 19:18:29的发言:

#include
void main()
{
    int i,A,B,C,D;
    for(i=5000;i<=10000;i++)
    for(A=0;A<=4;A++)
    for(B=0;B<=4;B++)
    for(C=0;C<=4;C++)
    for(D=0;D<=4;D++)
    if(i==A*780+B*990+C*1230+D*1000)
    printf("n=%d,A=%d,B=%d,C=%d,D=%d\n",i,A,B,C,D);
   
}
改一下相应的数值,再加三个for循环就行了呗!
A,B,C,D是小于10的四次方的,且运行有时间限制,这个算法实际上是通不过的。。。
2010-05-30 21:36
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
#include<stdio.h>
void main()
{
    int P,T,A,B,C,D;
    int x1,x2,x3,x4;
    int count=0;
    scanf("%d%d%d%d%d%d",&P,&T,&A,&B,&C,&D);
    for(x1=-T;x1<=T;x1++)
        for(x2=-T;x2<=T;x2++)
            for(x3=-T;x3<=T;x3++)
                for(x4=-T;x4<=T;x4++)
                    if(A*x1+B*x2+C*x3+D*x4==P)
                        count++;
    printf("%d\n",count);
}
比如说这个算法当数据很大的时候,运行很费事,怎么进行优化呢???哪位大侠知道?
2010-05-30 22:02
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
大侠快现身!
2010-05-31 18:28
lxqq1000
Rank: 2
等 级:论坛游民
帖 子:23
专家分:30
注 册:2010-5-19
收藏
得分:4 
回复 3楼 想思
我不知道什么是传值或传引用  不过我想是传值可能只是把X值给Y,但是本身是两变量有两个不同的地址,而传引用可能是X和Y是同一个地址,所以在g()中y=y+1后x也变成了2
2010-05-31 18:47
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
以下是引用xichong在2010-5-30 22:02:18的发言:

#include
void main()
{
    int P,T,A,B,C,D;
    int x1,x2,x3,x4;
    int count=0;
    scanf("%d%d%d%d%d%d",&P,&T,&A,&B,&C,&D);
    for(x1=-T;x1<=T;x1++)
        for(x2=-T;x2<=T;x2++)
            for(x3=-T;x3<=T;x3++)
                for(x4=-T;x4<=T;x4++)
                    if(A*x1+B*x2+C*x3+D*x4==P)
                        count++;
    printf("%d\n",count);
}
比如说这个算法当数据很大的时候,运行很费事,怎么进行优化呢???哪位大侠知道?
谁能解决这个问题呢?欢迎你的指点!大概就是避免使用穷举法来优化算法的问题。
2010-05-31 22:40
xichong
Rank: 7Rank: 7Rank: 7
来 自:四川南充
等 级:黑侠
威 望:2
帖 子:146
专家分:582
注 册:2009-6-10
收藏
得分:0 
等待高手的出现。。。
2010-06-02 17:50
快速回复:谁能看看这道题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042067 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved