zoukankan      html  css  js  c++  java
  • 不使用运算符 /号实现两整数相除

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(div(1888888888,5));
                Console.Read();
            }
    
            /// <summary>
            /// 整数相除
            /// </summary>
            /// <param name="a">除数</param>
            /// <param name="b">被除数</param>
            /// <returns></returns>
            public static int div (int a,int b){
                List<int> history = new List<int>();
    
                double count = 0;
                while (true)
                {
                    if (a - b < 0) break;
                    history.Add(b);
                    count++;
                    a = a - b;
                    b += b;
    
                }
                count = (Math.Pow(2, count)) - 1;
                for (int i =history.Count-1; i >-1; i--)
                {
                    if (a < 1) break;
                    if (a - history[i] < 0) continue;
                    count += Math.Pow(2, i);
                     a -= history[i];
                     
                }
                Console.WriteLine("余数为"+a);
                return (int) count;
    
            }
        }
    }
    

      这里没有考虑被除数为0的情况

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                for (int i = 0; i < 1000000; i++)
                {
                 int s=   div(1888888888, 5);
                }
                watch.Stop();
                Console.WriteLine("土方法耗时"+watch.ElapsedMilliseconds);
                watch.Reset();
                watch.Start();
    
                for (int i = 0; i < 1000000; i++)
                {
                  int s=  (1888888888/5);
                }
                watch.Stop();
                Console.WriteLine("系统方法耗时" + watch.ElapsedMilliseconds);
    
                Console.Read();
            }
    
            /// <summary>
            /// 整数相除
            /// </summary>
            /// <param name="a">除数</param>
            /// <param name="b">被除数</param>
            /// <returns></returns>
            public static int div (int a,int b){
                List<int> history = new List<int>();
    
                double count = 0;
                while (true)
                {
                    if (a - b < 0) break;
                    history.Add(b);
                    count++;
                    a = a - b;
                    b += b;
    
                }
                count = (Math.Pow(2, count)) - 1;
                for (int i =history.Count-1; i >-1; i--)
                {
                    if (a < 1) break;
                    if (a - history[i] < 0) continue;
                    count += Math.Pow(2, i);
                     a -= history[i];
                     
                }
                //Console.WriteLine("余数为"+a);
                return (int) count;
    
            }
    
        }
    }
    

      

  • 相关阅读:
    ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏
    初学Larevel 2014-08-21 11:24 90人阅读 评论(0) 收藏
    初学PHP&MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
    codeforces 570 E. Pig and Palindromes (dp)
    codeforces 570 D. Tree Requests (dfs序)
    poj 2157 Maze (bfs)
    cf 570 C. Replacement (暴力)
    cf 570B B. Simple Game(构造)
    cf 570 A. Elections
    hdu 1429胜利大逃亡(续) (bfs+状态压缩)
  • 原文地址:https://www.cnblogs.com/ProDoctor/p/7243708.html
Copyright © 2011-2022 走看看