4 条题解

  • 2
    @ 2023-12-7 21:09:54

    最简代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        printf("19\n29\n39\n49\n59\n69\n79\n89\n99");
        return 0;
    }
    
    • 2
      @ 2023-3-25 21:06:03
      #include <iostream>//hetao3097453
      using namespace std;
      int a,b;
      int main()
      {
          for(int i = 19;i <= 99;i += 10)
          {
              cout << i << endl;
          }
          return 0;
      }
      
      
      • 0
        @ 2023-10-4 19:47:53
        #include<bits/stdc++.h>
        using namespace std;
        int main()
        {
            for(int i=19;i<=99;i++)
            {
                int a=i/10,b=i%10;
                if((a+b)+(a*b)==i)
                {
                    cout<<i<<endl;
                }
            }
            return 0;
        }
        
      • 0
        @ 2022-8-17 15:11:15

        其实这个问题本质是个数学问题,设满足题意的数为10x+y,则我们知道有这样的方程: 10x+y=x+y+xy 化简得: 9x=xy 两边同除x,得y=9。由于x被消去,所以可以取1-9,于是可知19,29,39,49,59,69,79,89,99满足题意。 据此可以这样写出代码:

        using namespace std;
        int main()
        {
        	for (int i=19;i<100;i+=10)
        	{
        		cout<<i<<endl;
        	}
        }
        

        当然,不懂这些,我们也可以简单粗暴地直接枚举并判断。例如

        #include <iostream>
        using namespace std;
        int main()
        {
        	int s1,s2;//s1表示10x+y,s2表示x+y+x*y. 
        	for (int i=1;i<10;i++)
        	{
        		for (int j=0;j<10;j++)
        		{
        			s1=10*i+j;
        			s2=i+j+i*j;
        			if (s1==s2)
        			{
        				cout<<s1<<endl;
        			}
        		}
        			
        	}
        }
        

        虽然用时多一点,但也是无妨的。

        • 1

        信息

        ID
        719
        时间
        1000ms
        内存
        128MiB
        难度
        1
        标签
        递交数
        106
        已通过
        72
        上传者