zoukankan      html  css  js  c++  java
  • hdu_5778_abs(暴力)

    题目链接:hdu_5778_abs

    题意:

    给你一个数x,然你找一个y,这个y只能被素数分解,每一个素数恰好出现2次,求y-x的绝对值最小

    题解:

    给官方的  ps:数据太水,打35个素数也能过

     1 #include<bits/stdc++.h>
     2 #define F(i,a,b) for(int i=a;i<=b;++i)
     3 using namespace std;
     4 typedef long long ll;
     5 const int E_N=35;
     6 int p[E_N],tot;
     7 bool vis[E_N+1];
     8 void Euler(){
     9     F(i,2,E_N){
    10         if(!vis[i])p[++tot]=i;
    11         F(j,1,tot){
    12             if(i*p[j]>E_N)break;
    13             vis[i*p[j]]=1;
    14             if(i%p[j]==0)break;
    15         }
    16     }
    17 }
    18 
    19 bool check(int x)
    20 {
    21     for(int i=1;i<=tot&&p[i]*p[i]<x;i++)if(x%p[i]==0)
    22     {
    23         x/=p[i];
    24         if(x%p[i]==0)return 0;
    25     }
    26     return 1;
    27 }
    28 
    29 int main(){
    30     Euler();
    31     int t;scanf("%d",&t);
    32     while(t--)
    33     {
    34         ll n,ans;
    35         scanf("%lld",&n);
    36         int tmp=(ll)sqrt(n+0.5);
    37         if(tmp<2){printf("%lld
    ",4ll-n);continue;}
    38         for(int i=tmp;i>=2;i--)
    39             if(check(i)){ans=abs(1ll*i*i-n);break;}
    40         for(int i=tmp+1;;i++)
    41             if(check(i)){ans=min(ans,abs(1ll*i*i-n));break;}
    42         printf("%lld
    ",ans);
    43     }
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    For-Each循环
    test
    网络学习一
    Struts2的interceptor
    Struts2的action解读
    js 读取<select>标签选项 索引
    java项目打jar包
    图解sendRedirect和forward的区别
    导入外部项目无法识别为Web项目无法部署到tomcat
    项目乱码的分析与解决
  • 原文地址:https://www.cnblogs.com/bin-gege/p/5722825.html
Copyright © 2011-2022 走看看