zoukankan      html  css  js  c++  java
  • HDU 1098(条件满足 数学)

    题意是问是否存在非负整数 a,使得任取非负整数 x,f(x) 能够被 65 整除,其中 f(x) = 5*x^13 + 13*x^5 + k*a*x,如存在,输出 a 的最小值,如不存在,输出 no。

    由于 f(x) 的每一项都乘以 x,那么 f(x) = m*x (m为常数),若 65 | f(x) (即 f(x) 能够被 65 整除) ,则 65 | x*f(x),65 | x*x*f(x),...

    取 f(1) = 5 + 13 + k*a = 18 + k*a;那么问题便转化成了给定 k,是否存在满足 65 | ( 18 + k*a ) 的 a 的值。当 a 超过 64 仍不满足条件时,则输出 no,

    因为继续增大 a 只是 ( 18 + k*a ) % 65 的值开始在 1 - 65 之间循环,无法得到 ( 18 + k*a ) % 65 == 0 。

    代码如下:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int a,x,k,f;
     4 int main()
     5 {
     6     while(~scanf("%d",&k))
     7     {
     8         f = 1;
     9         for(a = 0; a < 65; ++a)
    10         {
    11             if((k*a+18)%65 == 0)
    12             {
    13                 f = 0;
    14                 printf("%d
    ",a);
    15                 break;
    16             }
    17         }
    18         if(f) puts("no");
    19     }
    20     return 0;
    21 }
    View Code

    特向这篇博客的作者致谢:https://www.cnblogs.com/kimsimple/p/7123343.html

  • 相关阅读:
    CSU 1122
    CSU 1256
    CSU 1240
    HDU 1874
    CSU 1004
    Problem F CodeForces 16E
    Problem E CodeForces 237C
    Problem C FZU 1901
    12-30
    2016-12-29
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9594870.html
Copyright © 2011-2022 走看看