a,输入一个整数如2,输入项数如4,计算下式的值:2+22+222+2222(如输入的是
和2 则计算的是 3+33)b,一篮子鸡蛋 数目除2余1,除3余2,除4余3,除5余4 问有多少个c,一个数的个位是8(如128),将8移到首位(变成812)后将是原来的4倍,编
程求这个数(最小值)d,A、B、C、D、E、F、G分别代表 1000、500、100、50、5、1,给定一个字符串
如 ABC,求出它的值(ABC=1000+500+100)第一题算出来了   第2题 用程序怎么不会写...第3题... 答案求不出...  第4题 好象要类型强制转换求吧..  求程序源码  谁给算算啊...答案出来就结贴

解决方案 »

  1.   

    第一个不考虑溢出
        private Int64 getSum(int data, int num)
        {
            Int64 i64 = 0;
            for (int i = 1; i <= num; i++)
            {
                i64 += Int64.Parse(data.ToString().PadRight(i, data.ToString().ToCharArray()[0]));
            }
            return i64;
        }
      

  2.   

    第二题五十九个
        private int getEggNum(int tatol)
        {
            int egg = 0;
            for (int i = 0; i < tatol; i++)
            {            if (i % 2 == 1 && i % 3 == 2 && i % 4 == 3 && i % 5 == 4)
                {
                    egg = i;
                    i = i + tatol;
                }
            }
            return egg;
        }
      

  3.   

    用total控制一下,大约多少个,嘿嘿,找到最合适一个就跳出
      

  4.   

    5题:
    利用HastTable
    A 1000
    B 500
    C 100
    D 50
    E 10
    F 5
    G 1对于给定字符串每一位依次取出,然后在HashTable找出其对应的值 求和累计 就行
      

  5.   

    第三题    private int getMin(int total)
        {
            int min = 0;
            for (int i = 1; i < total; i++)
            {
                if (i.ToString().LastIndexOf('8') == (i.ToString().Length-1) && i * 4 == int.Parse("8" + i.ToString().TrimEnd('8')))
                {
                    min = i;
                    i = i + total;            
                }
            }
            return min;
        }
      

  6.   

    一个数的个位是8(如128),将8移到首位(变成812)后将是原来的4倍,编
    程求这个数(最小值)int getRequireValue()
    {
       int l=0;
       int tempN;
       for(int n=18;n<Int.MaxValue;n=n+10)
       {
          tempN=8;
          l=n.tostring().length;
          for(int i=1;i<l;i++)
          {
            tempN*=10;
          }
          tempN+=n%10;
          if(tempN/n==4)
          {
            return n;
          }
       }
       returen 0;
    }
      

  7.   

    蹭点分c,一个数的个位是8(如128),将8移到首位(变成812)后将是原来的4倍,编
    程求这个数(最小值)for (int i = 18; ; i += 10)
    {
        int j = i / 10 + 8 * (int)Math.Pow(10, (int)Math.Log10(i));
        if ((double)j / 4 == i)
        {
            Console.WriteLine(i); //205128
            break;
        }
    }
      

  8.   

    //一篮子鸡蛋 数目除2余1,除3余2,除4余3,除5余4 问有多少个
    for (int i = 1; ; i++)
    {
        if (i % 2 == 1 &&
            i % 3 == 2 &&
            i % 4 == 3 &&
            i % 5 == 4)
        {
            Console.WriteLine(i); //59
            break;
        }
    }
      

  9.   

    //d,A、B、C、D、E、F、G分别代表 1000、500、100、50、5、1,给定一个字符串
    string chars  = "ABCDEFG";
    int[] numbers = new int[] { 1000, 500, 100, 50, 5, 1 };
    string S = "ABC";
    int sum = 0;
    foreach(char c in S)
    {
        int i = chars.IndexOf(c);
        if (i < 0) break;
        sum += numbers[i];
    }
    Console.WriteLine(sum); // 1600
      

  10.   

    第四道题思路:
    先用一个数组来保存输入的字母A,B,C,D..
    再用一个数组来保存和字母相对应的值500,100,200
    然后输入的字母再和数组中的字母相比。求出所以位置,再从数据数据中取得相对应的值相加即可
    现在没写时间写只能提供思路
      

  11.   

    //a,输入一个整数如2,输入项数如4,计算下式的值:2+22+222+2222(如输入的是
    和2 则计算的是 3+33)int A = 2;
    int B = 4;
    int sum = 0;
    int X = A;
    for (int i = 1; i <= B; i++)
    {
        sum += X;
        X = X * 10 + A;
    }
    Console.WriteLine(sum); //2468全贴了,楼主该结了吧。
      

  12.   

    private int getStringSum(string s)
        {
            int sum = 0;
            Hashtable ht = new Hashtable();
            ht.Add("A", 1000);
            ht.Add("B", 500);
            ht.Add("C", 100);
            ht.Add("D", 50);
            ht.Add("E", 10);
            ht.Add("F", 5);
            ht.Add("G", 1);        for (int i = 0; i < s.Length; i++)
            {
                sum += (int)ht[s.Substring(i, 1)];
            }    
            return sum;    }
      

  13.   

    1.一种另类思考方式,而已.
    private double getSum(double a,double b)
    {
    double sum=0;
    for(double i=b;i>0;i--)
    {
    sum+=a*i*Math.Pow(10,b-i);
    }
    return sum;
    }
    2.这个%2=1 奇数 ;%5=4不是4结尾就是9结尾=9结尾
    private int getEgg()
    {
    for(int i=19;;i+=10)
    if(i%3==2&&i%4==3)
    return i;
    }
    3.末尾是8,4倍结尾是2 最后两位是28 从百位开算就可以
    private int getMin()
    {
    for(int i=128;;i+=100)
    {
    if((i*4)==((i/10)+8 * (int)Math.Pow(10, (int)Math.Log10(i))))
    {
    return i;
    }
    }
    }
    4.搞笑一把,简单的对应 不写了
    private int 搞笑()
    {
    int A=1000,B=500,C=100,D=50,E=5,F=1;
    return A+B+C;
    }//另清清的办法,很有创意
      

  14.   

    //d,A、B、C、D、E、F、G分别代表 1000、500、100、50、5、1,给定一个字符串
    string chars  = "ABCDEFG";
    int[] numbers = new int[] { 1000, 500, 100, 50, 5, 1 };
    string S = "ABC";
    int sum = 0;
    foreach(char c in S)
    {
        int i = chars.IndexOf(c);
        if (i < 0) break;
        sum += numbers[i];
    }
    Console.WriteLine(sum); // 1600
      

  15.   

    Red_angelX(八戒) ( ) 信誉:100 
    那你发表一下高见啊,不要只看不说!