zoukankan      html  css  js  c++  java
  • 51nod 1170 1770 数数字(数学技巧)

    解题思路:
    看到题后,直接想到分成两种情况:

    ①:a*b >9

      这里又分成两种

       1. n==1 a*b 直接是一个两位数 求得十位和个位(这里十位和个位不可能相等) 然后如果等于d 则结果=1

       2. n>1  

          直接分析 a*b aa*b aaa*b aaaa*b的结果

          6 * 8 = 48

           66 * 8 =  528

           666 * 8 = 5328

          6666 * 8 =53328 

          ......   * 8 = 5....328

         所以可以看出结果

              只需求出 个位 十位 百位 和最高位即可

    ②:a*b <=9

      判定 a*b 是否 == d 即可

      不等于 ans=0

      等于 ans=n

    Ac code:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int t;
     5     scanf("%d",&t);
     6     while(t--)
     7     {
     8         int a,b,d,n;
     9         scanf("%d%d%d%d",&a,&b,&d,&n);
    10         if(a*b<=9)
    11         {
    12             printf("%d
    ",a*b%10==d?n:0);
    13         }
    14         else
    15         {
    16             int ans=0;
    17             if(n!=1)
    18             {
    19                 int k=(a*100+a*10+a)*b;
    20                 if(k%10==d)ans++;
    21                 if(k/10%10==d)ans++;
    22                 if(k/100%10==d)ans+=n-2;
    23                 if(k/1000==d)ans++;
    24 
    25             }
    26             else
    27             {
    28                 if(a*b%10==d||a*b/10==d)ans++;
    29             }
    30             printf("%d
    ",ans);
    31         }
    32     }
    33     return 0;
    34 }
  • 相关阅读:
    本机可以,服务器却不行
    学习摘录1Hello, World!
    钻石问题
    OPEN OFFICE使用技巧
    操作符的重载
    函数重载
    关于“结构”好别扭的一段话
    多重继承
    OPEN OFFICE操作技巧3
    70个现代风格的HTML5 WordPress主题网站
  • 原文地址:https://www.cnblogs.com/A--Q/p/5779556.html
Copyright © 2011-2022 走看看