本帖最后由 xyf12303 于 2012-04-19 23:38:58 编辑

解决方案 »

  1.   

    哈哈,没有理解程序照着改就和变魔术一样。知道为什么相减就可以么,相加为什么不可以么?给你修改后的程序,自己琢磨吧:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string condition = "6";
                var result = Enumerable.Range(0, 1000)
                    .Select(x => x.ToString().PadLeft(3, '0'))
                    .Where(x => new int[] { (x[0] + x[1] - 2 * '0') % 10, (x[0] + x[2] - 2 * '0') % 10, (x[1] + x[2] - 2 * '0') % 10 }
                        .Any(y => condition.Contains(y.ToString())));
                Console.WriteLine(string.Join(", ", result));
            }
        }
    }
      

  2.   

    本帖最后由 caozhy 于 2012-04-20 01:00:12 编辑
      

  3.   

    还是没弄明白,为什么相加的情况下每个X[]要减去一个'0'后再相加才是我要的结果呢?请caozhy大哥教教小弟!
      

  4.   

    因为 x[0] 是 char 类型,不是数字。char类型的值是对应数字的ascii码值。但是 '0' 和 '9' 的 ascii 值相差是正确的,相加就要减掉两倍 '0' 对应 ascii。
      

  5.   

    因为 x[0] 是 char 类型,不是数字。char类型的值是对应数字的ascii码值。但是 '0' 和 '9' 的 ascii 值相差是正确的,相加就要减掉两倍 '0' 对应 ascii。
      

  6.   


    那类似这样的取余之后的数该怎么处理?试了好几天没弄出来,所谓的取余 如下
    比如237,头两位对5取余后相加,2%5+3%5=5
    再比如256,头两位对5取余后相加,2%5+5%5=2
    转成char型对应的ascii后怎么处理以上这种取余的情况?减多少?感觉每个固定值好减的