9/8 小风吹-思维赛解题思路

A

题意:F(x)的作用是让x+1,如果最后一位是零将零去掉,求不同F(n)的个数;

解题思路:当n只有一位时F(n)的个数一定是9,然后每一位单独处理,不同的个数有10-n%10;

代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
long long n,flag=0;
while(~scanf("%lld",&n))
{
     if(n%10==0)
     {
         flag++;
         n++;
     }
     while(1)
     {
         if(n<10)
            break;
         long long x=n%10;
         if(x==0)
         {
             n/=10;
             continue;
         }
         flag+=10-x;
         n=n/10+1;
     }
     printf("%lld\n",flag+9);
}
return 0;
}

B

题意:给一串数字,可以根据下一行它的地址对应的数字对其进行修改,每个数字只能修改一次,输出修改后的最大值

解题思路:从左向右依次开始找,如果f(x)>x就改变,否则不变

代码:

C

题意:给n个数,每个数都可以进行两个操作,操作1:x+2/x-2,操作2:x+1/x-1,操作1免费,操作2花费1,求让所有数字相同的最小花费

扫描二维码关注公众号,回复: 7423811 查看本文章

解题思路:直接统计奇数偶数的个数,输出最小值

代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
  int n,a[1000],i,b=0,c=0;
  while(~scanf("%d",&n))
  {
      for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        for(i=0;i<n;i++)
        {
            if(a[i]%2==0)
                b++;
            else
                c++;
        }
        if(b<=c)
            printf("%d",b);
        else
            printf("%d",c);
  }
}

D

题意:求bad day的天数

解题思路:从后往前,大雨后面值的个数

代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
  int t,n,a[150000],flag,b,i,j,x;
  scanf("%d",&t);
  while(t--)
  {
      scanf("%d",&n);
      for(i=1;i<=n;i++) scanf("%d",&a[i]);
        b=a[n];
        flag=0;
        for(i=n-1;i>=1;i--)
        {
           if(a[i]>b)
            flag++;
            else
            {
                b=a[i];
            }
        }
      printf("%d\n",flag);
  }

}

E

猜你喜欢

转载自www.cnblogs.com/xiao20000605/p/11621799.html
9-8
8-9
9_8