第一个能不能n=n+i*(-1)^i这样?
不知道效率如何。没试过。

解决方案 »

  1.   


    第一题。规律,如果m为偶数,结果为m/2* -1,否则,结果为(m-1)/2 * -1 + m -->(m + 1) / 2
      

  2.   

    数学题吗
    m % 2 == 0,sum = -m/2,否则sum = (m+1)/2
      

  3.   


    第一题。规律,如果m为偶数,结果为m/2* -1,否则,结果为(m-1)/2 * -1 + m -->(m + 1) / 2让你这么一讲解 我更迷糊了 真的
      

  4.   

    BigDecimalbg 你看看这个类,我先睡会觉
      

  5.   

    原理分组求和
    1-2+3-4+5-6+... ...99-N
    =1+(3-2)+(5-4)+(7-6)+…… +(99-98)-N
    =1+1×M-N
    =M+1不知道你看懂没有....N是最后一个数  M是有多少个括号
      

  6.   


    第一题。规律,如果m为偶数,结果为m/2* -1,否则,结果为(m-1)/2 * -1 + m -->(m + 1) / 2
      

  7.   

            static int g(int m)
            {
                return (m / 2 + m % 2) * (m % 2 == 0 ? -1 : 1);
            }
            static int g1(int m)
            {
                int n = 0;
                for (int i = 1; i <= m; i++)
                {
                    if (i % 2 == 0) n = n - i;
                    else n = n + i;
                }
                return n;
            }
            static void Main(string[] args)
            {
                //第1题
                for (int i = 0; i < 50; i++)
                {
                    Console.WriteLine(g(i));//方法1
                    Console.WriteLine(g1(i));//方法2
                }
            }
      

  8.   

    两两分组 结果都为-1
    if(n%2==0)
     return -(n/2);//即-1*(n/2)
    else
     return n-(n-1)/2 ;//n-1为偶数 两两分组 结果都为-1,与分组数((n-1)/2)相乘,加上最后一位奇数
    PS:先找数学规律,在设计算法
      

  9.   

                //第2题            long n = 22;
                string ss = "";
                for (int i = 0; i < 100; i++)
                {
                    ss += (n * 10000000000 / 7).ToString();
                    n = n*10000000000%7;            }
                ss = ss.Insert(1, ".");
                Console.WriteLine(ss);
      

  10.   

    static int g(int m)
            {
                return (m / 2 + m % 2) * (m % 2 == 0 ? -1 : 1);
            }
            static int g1(int m)
            {
                int n = 0;
                for (int i = 1; i <= m; i++)
                {
                    if (i % 2 == 0) n = n - i;
                    else n = n + i;
                }
                return n;
            }
            static void Main(string[] args)
            {
                //第1题
                for (int i = 0; i < 50; i++)
                {
                    Console.WriteLine(g(i));//方法1
                    Console.WriteLine(g1(i));//方法2
                }
                //第2题            long n = 22;
                string ss = "";
                for (int i = 0; i < 100; i++)
                {
                    ss += (n * 10000000000 / 7).ToString();
                    n = n*10000000000%7;            }
                ss = ss.Insert(1, ".");
                Console.WriteLine(ss);
           }
      

  11.   

    第一题第一个方法m为奇数时,会多0.5,我算错了么?
    你是用什么计算的,C#的/这个是整除,不会出现小数的,如果是javascript要取整parseInt这个方法取整
      

  12.   

    第一题第一个方法m为奇数时,会多0.5,我算错了么?
    你是用什么计算的,C#的/这个是整除,不会出现小数的,如果是javascript要取整parseInt这个方法取整
    恩恩。我面试完在网吧查收邮件呢,所以我没环境。
    用的javascript。
      

  13.   

    22/7的计算            int v1 = 22;
                int v2 = 7;
                int s = v1 / v2; //取整
                int mod = v1 % v2;    //取余
                Console.Write(s);
                for(int i=0;i<1000;i++)
                {
                    int v = mod*10;
                    s = v / v2;
                    mod = v % v2;
                    Console.Write(s);
                }
                Console.ReadKey();
      

  14.   

    if(n%2=1) n/2+n
    else
    n/2-n
      

  15.   


    function getSum(n)
    {
        return (n % 2 == 0) ? n / 2 + 1 : -n / 2;
    }
      

  16.   


    function getSum(n)
    {
        return (n % 2 != 0) ? n / 2 + 1 : -n / 2;
    }