• hdu 5944 Fxx and string


    :nn,下标从1开始,第:i:i位的字母为:s_isi​​,现在Fxx想知道有多少三元组:(i,j,k):(i,j,k)满足下列条件
    
    1、i,j,k:i,j,k三个数成等比数列
    
    2、s_i=si​​='yy',s_j=,sj​​='rr',s_k=,sk​​='xx'
    
    3.i/ji/j和k/jk/j中必须有整数:nn,下标从1开始,第:i:i位的字母为:s_isi​​,现在Fxx想知道有多少三元组:(i,j,k):(i,j,k)满足下列条件
    
    1、i,j,k:i,j,k三个数成等比数列
    
    2、s_i=si​​='yy',s_j=,sj​​='rr',s_k=,sk​​='xx'
    
    3.i/ji/j和k/jk/j中必须有整数:nn,下标从1开始,第:i:i位的字母为:s_isi​​,现在Fxx想知道有多少三元组:(i,j,k):(i,j,k)满足下列条件
    
    1、i,j,k:i,j,k三个数成等比数列
    
    2、s_i=si​​='yy',s_j=,sj​​='rr',s_k=,sk​​='xx'
    
    3.i/ji/j和k/jk/j中必须有整数

    题意确实有点不清晰,第3点应该是i必须被j整除且j必须被k整除,之后就是循环i,枚举q,暴力解题
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    char a[10010];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",a+1);
            int ans=0;
            int n=strlen(a+1);
            for(int i=1; i<=n; i++)
            {
                if(a[i]=='y')
                    for(int j=2; i*j*j<=n; j++)
                    {
                        if(a[i*j]=='r'&&a[i*j*j]=='x') ans++;
                    }
            }
            for(int i=n; i>=1; i--)
            {
                if(a[i]=='y')
                    for(int j=2; i/j/j>=1; j++)
                    {
                        if((i%j)||(i%(j*j))) continue;
                        if(a[i/j]=='r'&&a[i/j/j]=='x') ans++;
                    }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    Requests将verify设置为False后取消警告的方式
    pandas处理Excel数据的应用
    移除Selenium中的 window.navigator.webdriver
    python中math模块常用的方法整理
    Numpy、pandas、Matplotlib
    osgEarth
    Nginx 代理本地文件夹(Windows环境)
    windows下nginx的安装及使用
    OSG入坑之路[转]
    ubuntu16.04下NVIDIA GTX965M显卡驱动PPA安装
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/6123594.html
Copyright © 2020-2023  润新知