A,B,C,D,E五个渔夫夜间合伙捕鱼,凌晨都疲惫不堪,各自在草丛中熟睡。
第二天清晨A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,
B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,
C,D,E也按同样方法分鱼。问5人至少捕到多少条鱼?请给出代码。
第二天清晨A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,
B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,
C,D,E也按同样方法分鱼。问5人至少捕到多少条鱼?请给出代码。
解决方案 »
- 在JTable中,拖动一列到其它的位置,再点击排序,这时它是对原来在这个位置的列进行排序,怎么样让它对这个新的列进行排序呢?
- 菜鸟请教一个简单的问题
- 请问大家的eclipse的编辑器一般选用的什么字体啊,我觉得默认的好难看啊,还有行距也小
- [---->新手提问<----]如何取得放置某个JButton的窗体对象?
- servlet 的执行问题(初学者)
- 程序中如何设置component的焦点?
- sos,数据库的小问题,但很急!
- 想买一本介绍java类库的书,有什么好书介绍没有。
- 如何通过JDB:ODBC访问局域网中的其他机器上的MYSQL数据库(在线等待)?
- 关于邮件的主题的问题,高手们请进来
- 这个错是什么意思啊?
- 有没有java可视化插件
楼主【tteesstt】截止到2008-06-28 22:09:35的历史汇总数据(不包括此帖):
发帖数:73 发帖分:3600
结贴数:73 结贴分:3600
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
for (int i = 0;; i++) {
int sum = i;
for (int j = 0; j < 5; j++) {
if (sum % 5 == 1)
sum = (sum / 5)*4;
else
sum = 0;
}
if (sum != 0) {
System.out.println(i);
break;
}
}
}
}
public static void main (String[] arge) {
int i=0;
do{
i++;
if ( f (5,i*5+1) ) {
System.out.println (i*5+1);
System.exit (0);
}
}
while(true);
}
public static boolean f (int a,int b) {
if ( (b-1)%5==0 ) {
if (a==1) return true;
else return f (a-1,(b-1)/5*4);
}
return false;
}
}
main(){
int n,i,x,flag=1;
for(n=6;flag;n++){
for(x=n,i=1;flag&&i<=5;i++)
if((x-1)%5==0)x=4*(x-1)/5;
else flag=0;
if(flag)break;
else flag=1;
}
printf("Total fish=%d\n",n);
}答案3121
第一个拿走自己的一堆后同样除5余1,
即4k mod 5=1,
所以 k mod 5 =4
同理,第二个、第三个……都是4堆余1,自然一堆余4
这正是“除基数取余”的方法,所以答案就是5进制的 44441
(44441)5=3121D---------------
(44441)5 / (10)5=(4444)5 余1(5)
(4444/4堆)5 mod (10)5=(1111)5mod(10)5=4
public static void main (String[] arge) {
int i=0;
do{
i++;
if ( f (5,i*5+1) ) {
System.out.println (i*5+1);
System.exit (0);
}
}
while(true);
}
public static boolean f (int a,int b) {
if ( (b-1)%5==0 ) {
if (a==1) return true;
else return f (a-1,(b-1)/5*4);
}
return false;
}
}这个递归是正确的
public class Fy { /**
* 求解渔夫分鱼问题(穷举法)。
* @param num 渔夫数。
* @param mod 每次丢掉鱼数。
* @return 这些渔夫至少捕到多少条鱼能使条件成立。
*/
public static int fy(final int num, final int mod) {
if (num < 1 || mod < 1) return -1;
int min = num + mod;
while (min < Integer.MAX_VALUE) {
int m = min;
int i = num;
do {
if (m % num != mod) break;
m -= mod;
m -= m / num;
} while (--i > 0);
if (i == 0) return min;
++min;
}
return -1;
} public static void main(String[] args) {
System.out.println(fy(5, 1));
}}
答案:
3121
* 求解渔夫分鱼问题(穷举法)。
* @param num 渔夫数。
* @param mod 每次丢掉鱼数。
* @return 这些渔夫至少捕到多少条鱼能使条件成立。
*/
public static int fy(final int num, final int mod) {
if (num < 1 || mod < 1) return -1;
int min = num + mod;
while (min < Integer.MAX_VALUE) {
int m = min;
int i = num;
do {
if (m % num != mod) break;
m -= mod;
m -= m / num;
} while (--i > 0);
if (i == 0) return min;
++min;
}
return -1;
} public static void main(String[] args) {
System.out.println(fy(5, 1));
}}
public static int FishNum(int n,int i,int j){
//FishNum(人数,每份鱼数,扔掉的),返回参与分配的鱼总数
return n*i+j;
}
public static void main(String args[]){
int a[]=new int [5];
a[4]=1;
for (int i=3;i>=0;i--){
a[i]=FishNum(5,a[i+1],1);
}
int sum=FishNum(5,a[0],1);
System.out.println("鱼总数为:"+sum);
}
}鱼总数为:3906;
public class CentFish{
private static long count_peach(int n) //n为5个渔夫
{
if(n == 1)
{
return 6;
}
else
{
return count_peach(n - 1) * 5 + 1;
}
}
public static void main(String[] args) {
System.out.print(count_peach(5));
}
}
用递归
class Demo{
public static void main(String[] args){
long x=f(5);
System.out.println("有"+x+"条鱼");
}
static long f(int i){
if(i==1){
return 6;
}
else
return f(i-1)*5+1;
}
}
/**
* @(#)Fenyu.java
*
*
* @nuciewth
* @version 1.00 2008/6/29
*/
public class Fenyu { public Fenyu() {
}
public static void main (String[] args) {
int temp=1;
for(int i = 1 ; i < 6; i++){
temp=temp*5+1;
}
System.out.println(temp);
}
}
[/code]
* @(#)Fenyu.java
*
*
* @nuciewth
* @version 1.00 2008/6/29
*/
public class Fenyu { public Fenyu() {
}
public static void main (String[] args) {
int temp=1;
for(int i = 1 ; i < 6; i++){
temp=temp*5+1;
}
System.out.println(temp);
}
}
public static void main(String[] arge) {
int i, j, num;
for (i = 1;; i++) {
num = i;
for (j = 0; j < 4; j++) {
if ((num * 5 + 1) * 5 % 4 != 0)
break;
else
num = (num * 5 + 1) / 4;
}
if (j == 4) {
System.out.println("num*5+1 :" + (num * 5 + 1));
System.out.println("i :" + i);
break;
}
}
}
就是求 5X + 1 = 4Y 要求最少, 就是求符合条件的最小{X,Y}