AB计算器及程序

AB计算器
程序文件名: ab.cpp/ab.pas/...
  南开ACM协会的一位元老设计了一种特殊的计算器。这个计算器只有四个键(A,B,+,-)
  计算器显示的数值开始为c
  按一下"+"然后按一下"A",计算器显示的数值增加 a
  按一下"-"然后按一下"A",计算器显示的数值减少 a
  按一下"+"然后按一下"B",计算器显示的数值增加 b
  按一下"-"然后按一下"B",计算器显示的数值减少 b
  请问至少需要按多少下A键才能让计算器显示的值显示为0
输入(请使用标准输入输出,而不要读写文件)
  输入包含三个正整数 a b c ,以空格隔开,满足 0<a<2^95 0<b<2^95 0<c<2^95 a b 分别表示A键和B键的对应数值, c 表示计算器显示的初始值。(2^95 表示295次幂
输出(请使用标准输入输出,而不要读写文件)
  输出只有一个数,即为 A 键被按的次数的最小值(我们确保输入的情况都有对应的答案
样例输入1
样例输出1
7 12 8
4
样例输入2
样例输出2
10549830 6549835 5
140969

 

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
//#include <math.h>
#include "math.h"

 

void main()
{
    double a,b,c;
 int j=0;
 int di=0,dj;
 int i=0;
 bool accc=false;
 bool acc=false;
    double temp;
 bool flag=false;
 int times=1000000;
 cout<<"输入三个数字a b c:"<<endl;
 cin>>a>>b>>c;
 for( i=0;i<100000&&!flag;i++) ///+ +
 {
  for( j=0;j<100000&&!flag;j++)
  {
   if((i*a+j*b)==c)
    { times=i;  di=i;  dj=j; flag=true; }
   if((i*a+j*b)>c) break;
  }
  if(i*a>c)
   break;
 }
 flag=false;
 cout<<"2============================="<<endl;
 for(i=0;i<times&&!flag;i++) //+ -
 {
        temp=i*a;
  acc=false;
  accc=false;
  for( j=0;j>-300000&&!flag;j--)
  {
   if((temp+j*b)>c&&!acc)//jiasu acc
   {
    j=j-3000;
    continue;
   }
   else if(!acc)
   {
    acc=true;
    j=j+3000;
   }
         
   if((temp+j*b)>c&&!accc)//加速accc
   {
    j=j-600;
    continue;
   }
   else if(!accc)
   {
    accc=true;
    j=j+600;
   }


   if((temp+j*b)==c)
    if(i<times)
    { times=i; di=i;  dj=j;  if(!flag) cout<<"成功计算出一个了!"<<endl;flag=true;}
   if((temp+j*b)<c)
            break;
  }
      if((times/100)!=0)
     if((i)%(times/100)==99)
    cout<<1+(i)*100/times<<"%"<<endl;
 }
 flag=false;
 cout<<"3============================="<<times<<endl;
 for(i=0;i>-times&&!flag;i--)//- +
 {
  acc=false;
  accc=false;
  temp=i*a;
  for( j=0;j<1000000&&!flag;j++)
  {
           if((temp+j*b)<c&&!acc)//加速acc
   {
    j=j+20000;
    continue;
   }
   else if(!acc)
   {
    acc=true;
    j=j-20000;
   }
           
   if((temp+j*b)<c&&!accc)//加速accc
   {
    j=j+2000;
    continue;
   }
   else if(!accc)
   {
    accc=true;
    j=j-2000;
   }


   if((temp+j*b)==c)
    if(abs(i)<times)
    {  times =abs(i); di=i;  dj=j; if(!flag) cout<<"成功计算出一个了!"<<endl;flag=true;}
    if((temp+j*b)>c)
      break;
  }
  if((times/100)!=0)
          if((-i)%(times/100)==99)
        cout<<(-i)*100/times<<"%"<<endl;
 }
 cout<<"进入第四种算法"<<endl;
 for(i=0;i>-times&&!flag;i--)//- -
 {
  temp=i*a;
  acc=false;
  for( j=0;j>-times&&!flag;j--)
  {
   if((temp+j*b)>c&&!acc)
   {
    j=j-3000;
    continue;
   }
   else if(!acc)
   {
    acc=true;
    j=j+3000;
   }

   if((temp+j*b)==c)
    if((abs(i))<times)
    { times=abs(i); di=i;  dj=j;  flag=true;}
   if((temp+j*b)<c)
    break;
  }
   if((temp+j*b)<c)
    break;
   if((times/100)!=0)
        if((-i)%(times/100)==99)
          cout<<(-i)*100/times+1<<"%"<<endl;
 }
 
    if(di)
   cout<<"i= "<<di<<" j= "<<dj<<endl;
    getchar();
}

             

 

阅读更多
文章标签: math.h c 算法
个人分类: 小程序
上一篇卡片游戏及解答程序
下一篇宿舍分配问题
想对作者说点什么? 我来说一句

AB PLC程序例子(RSLogix5000)

2012年10月06日 1.64MB 下载

AB 触摸屏 示例 程序

2009年09月19日 38KB 下载

计算器(微信小程序源码)

2016年12月17日 80KB 下载

Android计算器程序

2016年03月18日 2.65MB 下载

电厂AB PLC控制程序

2013年06月20日 96KB 下载

没有更多推荐了,返回首页

关闭
关闭