小学生游戏 及程序
2006-06-23 15:22
274 查看
[align=center]小学生游戏[/align] | ||||||||
[align=right]程序文件名: pupil.cpp/pupil.pas/...[/align] | ||||||||
[align=left] 某天,无聊的小杰叫上几个同学玩游戏,其中有比较笨的小凤,比较傻的小雪,可爱的小鑫和自以为是的小练。他们去找聪明的小艺去给他们当裁判。判定谁取得游戏胜利。而这个游戏是:由小艺给出一个数 a ,再给出一个数 b ,经过规定的运算,使得数 a 变换成数 b ,且使用最少的变换次数 n .谁先说对这个 n ,谁就取得胜利。当然,因为都是小学生,所以假定如果n>6 ,就算是没有答案。那么裁判小艺试图通过编程来使自己尽快的获得答案。请你帮帮他吧...... 问题描述: 题目给出数a(a是一个正整数,不超过50位),再给出目标数b(同样是一个正整数,不超过50位), 数的运算有三种: 1:使当前数加上1985429 2:使当前数加上2006 3:使当前数乘2[/align] [align=left] 需要你求出这个最小的n,如果n>6,输出-1。(此为负一)。 例1:小艺给出数a=1,给出数b=1987437 那么最快我们经过3次指定运算可以使1变成1987437 1*2=2;(第3种变换) 2+1985429=1985431;(第1种变换) 1985431+2006=1987437;(第2种变换) 例2:小艺给出数a=1,给出数b=128 那么最快我们经过7次指定运算可以使1变成128 1*2*2*2*2*2*2*2=128(均采用第3种变换),但是因为n>6,所以按题意输出-1。[/align] | ||||||||
[align=left]输入 (请使用标准输入输出,而不要读写文件)[/align] | ||||||||
[align=left] 输入仅包含两个整数A、B,每行一个数字,0<A<1e+50,0<B<1e+50。 [/align] | ||||||||
[align=left]输出 (请使用标准输入输出,而不要读写文件)[/align] | ||||||||
[align=left] 输出只有一行,即为最少的变换次数 n ,若 n>6 则输出-1。 [/align] | ||||||||
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int innum,outnum;
int total;
int j=0;
int k=0;
int i=0;
bool flag=false;
cin>>innum>>outnum;
total=innum;
for( i=0;i<5;i++) //先+198429,再+2006,最后*2。
{
int temp1=total;
for(j=0;j<900;j++)
{
int temp2=temp1;
for(k=0;k<1000000;k++)
{
if(temp2==outnum)
{
flag=true;
cout<<"============1==============="<<endl;
goto loop;
}
if(temp2>outnum) break;
temp2*=2;
}
if(temp1==outnum)
{
flag=true;
cout<<"============1==============="<<endl;
goto loop;
}
if(temp1>outnum) break;
temp1+=2006;
}
if(total==outnum)
{
flag=true;
cout<<"============1==============="<<endl;
goto loop;
}
if(total>outnum) break;
total+=1985429;
}////////////////1/////////////////
total=innum;
for( i=0;i<900;i++)//先+2006,再+198429,最后*2。
{
int temp1=total;
for(j=0;j<5;j++)
{
int temp2=temp1;
for(k=0;k<1000000;k++)
{
if(temp2==outnum)
{
flag=true;
cout<<"============2==============="<<endl;
goto loop;
}
if(temp2>outnum) break;
temp2*=2;
}
if(temp1==outnum)
{
flag=true;
cout<<"============2==============="<<endl;
goto loop;
}
if(temp1>outnum) break;
temp1+=1985429;
}
if(total==outnum)
{
flag=true;
cout<<"============2==============="<<endl;
goto loop;
}
if(total>outnum) break;
total+=2006;
}////////////////2///////////
total=innum;
for(i=0;i<900;i++)//先+2006,再*2,最后+198429。
{
int temp1=total;
for(j=0;j<1000000;j++)
{
int temp2=temp1;
for(k=0;k<5;k++)
{
if(temp2==outnum)
{
flag=true;
cout<<"============3==============="<<endl;
goto loop;
}
if(temp2>outnum) break;
temp2+=1985429;
}
if(temp1==outnum)
{
flag=true;
cout<<"============3==============="<<endl;
goto loop;
}
if(temp1>outnum) break;
temp1*=2;
}
if(total==outnum)
{
flag=true;
cout<<"============3==============="<<endl;
goto loop;
}
if(total>outnum) break;
total+=2006;
}/////////////////////3///////////////////
total=innum;
for(i=0;i<5;i++)//先+198429,再*2,最后+2006。
{
int temp1=total;
for(j=0;j<100000;j++)
{
int temp2=temp1;
for(k=0;k<900;k++)
{
if(temp2==outnum)
{
flag=true;
cout<<"============4==============="<<endl;
goto loop;
}
if(temp2>outnum) break;
temp2+=2006;
}
if(temp1==outnum)
{
flag=true;
cout<<"============4==============="<<endl;
goto loop;
}
if(temp1>outnum) break;
temp1*=2;
}
if(total==outnum)
{
flag=true;
cout<<"============4==============="<<endl;
goto loop;
}
if(total>outnum) break;
total+=1985429;
}//////////////////4//////////////////////
total=innum;
for(i=0;i<10000;i++)//先*2,再+198429,最后+2006。
{
int temp1=total;
for(j=0;j<5;j++)
{
int temp2=temp1;
for(k=0;k<900;k++)
{
if(temp2==outnum)
{
flag=true;
cout<<"============5==========1====="<<endl;
goto loop;
}
if(temp2>outnum) break;
temp2+=2006;
}
if(temp1==outnum)
{
flag=true;
cout<<"============5=========2======"<<endl;
goto loop;
}
if(temp1>outnum) break;
temp1+=1985429;//a
}
if(total==outnum)
{
flag=true;
cout<<"============5=========3======"<<endl;
goto loop;
}
if(total>outnum) break;
total*=2; //c
}//////////////////5/////////////////////////
total=innum;
for(i=0;i<100000;i++)//先*2,再+198429,最后+2006。
{
int temp1=total;
for(j=0;j<5;j++)
{
int temp2=temp1;
for(k=0;k<900;k++)
{
if(temp2==outnum)
{
flag=true;
cout<<"============6==============="<<endl;
goto loop;
}
if(temp2>outnum) break;
temp2+=1985429;
}
if(temp1==outnum)
{
flag=true;
cout<<"============6==============="<<endl;
goto loop;
}
if(temp1>outnum) break;
temp1+=2006;//a
}
if(total==outnum)
{
flag=true;
cout<<"============6==============="<<endl;
goto loop;
}
if(total>outnum) break;
total*=2; //c
}//////////////////6/////////////////////////
loop:
int temp=i+j+k;
if(flag&&temp<570)
{
FILE *fp;
fp=fopen("1.txt","w");
fprintf(fp,"%d %d/n",innum,outnum);
fprintf(fp,"%d %d %d",i,j,k);
fclose(fp);
cout<<"计算步骤= "<<i+j+k<<endl;
cout<<" successed"<<endl;
}
else
cout<<"failed -1"<<endl;
getchar();
}
相关文章推荐
- C++ 小学生加减法测验程序源代码
- Eclipse开发J2ME程序 第六讲 制作图形化手机游戏
- 微信小程序 之 初体验(24点游戏)
- uu网络棋牌游戏平台程序源码搭建+8款游戏源码下载+镇钱棋牌游戏源码架设安装
- 游戏调试:利用双计算机调试游戏程序(转)
- Java游戏程序部署在不同平台的手机模拟器上
- 程序内部让用户直接上appstore评价游戏的链接地址以及跳转方法
- Mogre学习系列(5)如何使用Ogre建立游戏程序
- 一款游戏辅助程序的分析、制作方法
- [原创]我对类似QQ游戏数据采集和发送程序的一点思路
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- 山东H5微信小程序开发,H5捕鱼游戏开发免下载对接公众号
- 利用双计算机调试游戏程序
- 游戏程序流、状态处理机、进程管理器、数据包系统的实现
- 写个js程序咖常写的游戏-贪吃蛇
- Java游戏程序 - 推箱子
- 小程序第二季即将拉开序幕,开启你的小程序游戏世界
- 猜字游戏程序
- 网络游戏程序中解决加载卡顿的有效方法
- 2013金山西山居创意游戏程序挑战赛——初赛(1) 魔法串