问几个简单的算法
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题   好象要类型强制转换求吧..      求程序源码      谁给算算啊...   
 答案出来就结贴
------解决方案--------------------第一个不考虑溢出 
     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; 
     }   
------解决方案--------------------第三题      
  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; 
     }
------解决方案--------------------一个数的个位是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; 
 }
------解决方案--------------------//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 
------解决方案--------------------第四道题思路: 
 先用一个数组来保存输入的字母A,B,C,D.. 
 再用一个数组来保存和字母相对应的值500,100,200。。。 
 然后输入的字母再和数组中的字母相比。求出所以位置,再从数据数据中取得相对应的值相加即可。。。 
 现在没写时间写。。。只能提供思路。。。
------解决方案--------------------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; 
 }//另清清的办法,很有创意