水题堆2.F - "红色病毒"问题(看崩溃

#include <stdio.h>
#include <math.h>

int main()
{
    long long m;
    int n,i;
    int s[] = {4, 8,16,32,64,28,56,12,24,48,
    96,92,84,68,36,72,44,88,76,52};
    //s[1]=2;
    /*for(i=2;i<=25;i++){
        k=k*2;
        s[i]=k*k+k;
    }*/
    while(1){
        scanf("%d",&n);
        if(n==0)break;
        for(i=1;i<=n;i++){
            scanf("%lld",&m);
            //m=(m-2)%20+2;
            //printf("Case %d: ",i);
            //printf("%lld\n",s[m]%100);
            printf("Case %d: %d\n",i,m<3?(m<2?2:6):(s[(2*m-4)%20]+s[(m-3)%20])%100);
        }
        printf("\n");
    }
    return 0;
}

这道题看了别人的思路,用的是递推的办法(数论看不懂= =

如果没有限制,ABCD组成长度为n的字符串,应该有4^n种,因为有限制,所以分四组来讨论

1.用f[n][0]表示长度为n,A,C都出现偶数次的情况

2.用f[n][1]表示长度为n,A出现奇数次而C出现偶数次的情况

3.用f[n][2]表示长度为n,C出现奇数次而A出现偶数次的情况

4.用f[n][3]表示长度为n,A,C都出现奇数次的情况

现在分析每种情况

1.f[n][0]

(1)在f[n-1][0]的末尾加B或D(这里我刚开始认为应该是在任意位置插入B,D,应该是2*n*f[n][0],但是后来一想,这样的话会造成重复)

(2)在f[n-1][1]的末尾加A

(3)在f[n-1][2]的末尾加C

所以f[n][0]=2*f[n-1][0]+f[n-1][1]+f[n-1][2];

2.f[n][1]

   与1同理 可得f[n][1]=2*f[n-1][1]+f[n-1][0]+f[n-1][3];

3.f[n][2]

   同理可得 f[n][2]=2*f[n-1][2]+f[n-1][0]+f[n-1][3];

4.f[n][3]

    f[n][3]=2*f[n-1][3]+f[n-1][1]+f[n-1][2];

又有f[1][0]=2,f[1][1]=1,f[1][2]=1,f[1][3]=0;

则f[n][1]=f[n][2]

f[n][0]+f[n][3]=f[n][1]+f[n][2],f[n][0]+f[n][1]+f[n][2]+f[n][3]=4^n

所以f[n][0]=2*f[n-1][0]+f[n-1][1]+f[n-1][2]=2*f[n-1][0]+2 *4^(n-2)

一层层迭代下去,得

       f[n][0]=2^n+2^(n-1)+......+2^(2n-3)=4^(n-1)+2^(n-1);

因为2^n最后两位是有规律的,所以f[n][0]最后两位也是有规律的

2^22最后两位是4,与2^2相同,这就进入了一个循环,所以结果就在22个数字里面

<div class=&quot;search-result-card&quot;><div class=&quot;xdRZvpyH&quot;><div class=&quot;flex flex-col&quot;><div class=&quot;qOjIXOD6 videoImage&quot; style=&quot;padding-top: 133.333%;&quot;><div class=&quot;KJZePflz&quot;><div class=&quot;oyfanDG1&quot;><div class=&quot;DSeU7aaq&quot; style=&quot;background-image: url(&quot;https://p9-pc-sign.douyinpic.com/tos-cn-i-0813/oAAhAA72IVPBIAFxbvjZYEDDWsOS2ii8AQnPM~tplv-dy-cropcenter:323:430.jpeg?biz_tag=pcweb_cover&amp;from=327834062&amp;lk3s=138a59ce&amp;s=PackSourceEnum_SEARCH&amp;sc=cover&amp;se=true&amp;sh=323_430&amp;x-expires=2069668800&amp;x-signature=wURfD%2F7%2F828HaJQaqMIRGGmoDh4%3D&quot;);&quot;></div><div class=&quot;DSeU7aaq&quot; style=&quot;background-image: url(&quot;https://p9-pc-sign.douyinpic.com/tos-cn-i-0813/oAAhAA72IVPBIAFxbvjZYEDDWsOS2ii8AQnPM~tplv-dy-cropcenter:323:430.jpeg?biz_tag=pcweb_cover&amp;from=327834062&amp;lk3s=138a59ce&amp;s=PackSourceEnum_SEARCH&amp;sc=cover&amp;se=true&amp;sh=323_430&amp;x-expires=2069668800&amp;x-signature=wURfD%2F7%2F828HaJQaqMIRGGmoDh4%3D&quot;);&quot;></div><div class=&quot;J70M5rRJ&quot;></div><img src=&quot;https://p9-pc-sign.douyinpic.com/tos-cn-i-0813/oAAhAA72IVPBIAFxbvjZYEDDWsOS2ii8AQnPM~tplv-dy-cropcenter:323:430.jpeg?biz_tag=pcweb_cover&amp;from=327834062&amp;lk3s=138a59ce&amp;s=PackSourceEnum_SEARCH&amp;sc=cover&amp;se=true&amp;sh=323_430&amp;x-expires=2069668800&amp;x-signature=wURfD%2F7%2F828HaJQaqMIRGGmoDh4%3D&quot; class=&quot;sAu48sAa Xn3cOytH&quot; fetchpriority=&quot;high&quot; width=&quot;1080&quot; height=&quot;1440&quot; decoding=&quot;async&quot;></div><div class=&quot;uaGCrcWl&quot;><div class=&quot;aTty6Dqz&quot;><div class=&quot;bmTVuDbN&quot;></div><div class=&quot;hICYZaIw&quot;>00:32</div><div class=&quot;LUd60iMQ&quot;><svg width=&quot;24&quot; height=&quot;24&quot; fill=&quot;none&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; class=&quot;XpYL0ozp&quot; viewBox=&quot;0 0 24 24&quot;><path fill-rule=&quot;evenodd&quot; clip-rule=&quot;evenodd&quot; d=&quot;M9.224 4.667C6.326 4.667 4 7.151 4 10.043l.002.169a1.078 1.078 0 0 0-.002.094c.009.387.097.855.195 1.245.096.382.23.806.38 1.113.605 1.301 1.664 2.563 2.683 3.6a30.679 30.679 0 0 0 3.425 3.008l.02.017.015.012c.226.226.703.7 1.554.7h.025c.241 0 .816-.001 1.331-.502.009-.008.022-.02.042-.035l.182-.151.004-.004c.565-.465 1.886-1.554 3.188-2.867.834-.836 1.698-1.807 2.359-2.81.09-.136.176-.273.258-.41.033-.055.06-.112.082-.17.03-.077.044-.108.055-.13.013-.025.034-.063.088-.146.038-.06.07-.122.096-.188.037-.093.064-.156.085-.199l.004-.009c.087-.11.152-.238.19-.374.162-.576.273-1.082.284-1.705 0-.03 0-.058-.002-.087a7.123 7.123 0 0 0 .001-.206c-.019-2.876-2.338-5.341-5.224-5.341-1.094 0-2.159.339-2.999 1.021-.909-.658-1.957-1.021-3.097-1.021zm9.162 5.377v.134a2.388 2.388 0 0 0 0 .14c-.01.294-.057.559-.156.935-.043.07-.076.135-.1.186a4.313 4.313 0 0 0-.116.26c-.108.173-.178.31-.251.492-.05.082-.104.167-.16.252h-.001c-.55.834-1.304 1.69-2.087 2.476l-.003.002c-1.223 1.234-2.474 2.266-3.033 2.727l-.041.034c-.05.04-.105.086-.157.13l-.06-.061c-.065-.064-.154-.135-.197-.17l-.008-.006a28.517 28.517 0 0 1-3.214-2.817l-.003-.004c-.968-.985-1.824-2.042-2.27-3.009a4.077 4.077 0 0 1-.24-.719 4.491 4.491 0 0 1-.129-.715l.001-.036v-.098l-.001-.005-.002-.129c0-1.778 1.436-3.218 3.066-3.218.857 0 1.667.348 2.393 1.102a1.079 1.079 0 0 0 1.66-.129c.428-.61 1.155-.973 2.043-.973 1.63 0 3.066 1.441 3.066 3.218v.001z&quot; fill=&quot;#fff&quot;></path></svg><span>75.9万</span></div></div></div></div></div><div class=&quot;Rjle4CIM&quot;><div class=&quot;wSEoiOKC&quot;><div class=&quot;vqtFIVjM&quot;>此闹剧唯一受害者——围栏。#离谱 #万万没想到</div><div class=&quot;Yw1ttXGj&quot;><span class=&quot;YebDknhI&quot;><span class=&quot;AUcBf8QC&quot;>@</span><span class=&quot;VikzymRj&quot;>瓜瓜瓜妹</span></span><span class=&quot;wTD2qIyI&quot;> · 2024年8月28日</span></div></div></div></div></div></div>有视频链接没有
最新发布
08-05
<think>我们被要求检查给定的HTML代码中是否存在视频链接,特别是在div元素中。 视频链接通常出现在以下元素中: 1. <video> 元素的 <source> 子元素的 src 属性 2. <a> 标签的 href 属性(指向视频文件) 3. <embed>、<iframe> 或 <object> 元素中可能包含视频链接 4. 有时视频链接也可能作为属性值(如 data-src)存在于 div 元素上 但是,用户没有提供具体的HTML代码,所以我们只能提供通用的方法。 我们可以使用BeautifulSoup来解析HTML并查找可能的视频链接。 步骤: 1. 解析HTML字符串,创建BeautifulSoup对象。 2. 查找所有<video>元素,然后获取其中的<source>元素的src属性。 3. 查找所有<a>元素,检查其href是否指向视频文件(通过文件扩展名判断)。 4. 查找所有<embed>, <iframe>, <object>元素,并获取它们的src或data属性。 5. 另外,检查div元素中是否包含视频链接(例如,通过属性如data-video-src等)。 常见的视频文件扩展名:.mp4, .webm, .ogg, .mov, .avi, .wmv, .flv, .mkv 等。 注意:有时视频链接可能是相对路径,需要转换为绝对路径。 由于用户没有提供具体的HTML,我们将编写一个函数,输入为HTML字符串,输出为找到的视频链接列表。 代码示例:</think># 检查 HTML 代码中是否存在视频链接 要检查 HTML 代码中的 div 元素是否包含视频链接,可以使用以下方法: ## 解决方案代码 ```python from bs4 import BeautifulSoup import re def find_video_links(html_code): &quot;&quot;&quot; 在 HTML 代码中查找视频链接 返回包含视频链接的 div 元素列表 &quot;&quot;&quot; # 创建 BeautifulSoup 对象解析 HTML soup = BeautifulSoup(html_code, 'html.parser') # 视频文件扩展名模式(常见视频格式) video_pattern = re.compile( r'\.(mp4|webm|ogg|mov|avi|wmv|flv|mkv|m4v|3gp|mpg|mpeg)$', re.IGNORECASE ) # 视频链接容器 video_containers = [] # 查找所有 div 元素 for div in soup.find_all('div'): # 检查 div 内是否有 <video> 元素 if div.find('video'): video_containers.append(div) continue # 检查 div 内是否有 <source> 元素(视频源) if div.find('source', src=video_pattern): video_containers.append(div) continue # 检查 div 内是否有 <a> 元素链接到视频文件 if div.find('a', href=video_pattern): video_containers.append(div) continue # 检查 div 内是否有 <iframe> 元素(可能嵌入视频) if div.find('iframe'): iframe = div.find('iframe') if iframe.get('src') and any(p in iframe['src'] for p in ['youtube', 'vimeo', 'dailymotion', 'video']): video_containers.append(div) continue # 检查 div 是否有包含视频链接的属性(如 data-src) for attr in div.attrs: if video_pattern.search(str(div.get(attr))): video_containers.append(div) break return video_containers # 示例用法 if __name__ == &quot;__main__&quot;: # 示例 HTML 代码 html_example = &quot;&quot;&quot; <div class=&quot;video-container&quot;> <video width=&quot;320&quot; height=&quot;240&quot; controls> <source src=&quot;movie.mp4&quot; type=&quot;video/mp4&quot;> <source src=&quot;movie-hd.mp4&quot; type=&quot;video/mp4&quot;> 您的浏览器不支持视频标签。 </video> </div> <div class=&quot;content&quot;> <p>这是一个普通文本内容</p> <a href=&quot;document.pdf&quot;>PDF文档</a> </div> <div id=&quot;embedded-video&quot;> <iframe src=&quot;https://www.youtube.com/embed/dQw4w9WgXcQ&quot;></iframe> </div> <div data-video-src=&quot;trailer.webm&quot; class=&quot;hidden-video&quot;></div> &quot;&quot;&quot; # 查找包含视频链接的 div video_divs = find_video_links(html_example) if video_divs: print(&quot;找到包含视频链接的 div 元素:&quot;) for i, div in enumerate(video_divs, 1): print(f&quot;\n{i}. {div}&quot;) else: print(&quot;未找到包含视频链接的 div 元素&quot;) ``` ## 代码说明 ### 1. 视频链接检测方法 此函数通过以下方式检测视频链接: - 查找 `<video>` 元素 - 查找包含视频扩展名(如.mp4, .webm等)的 `<source>` 元素 - 查找包含视频扩展名的 `<a>` 链接 - 检测嵌入视频的 `<iframe>` 元素 - 检查 div 的自定义属性(如 `data-video-src`) ### 2. 常见视频格式支持 正则表达式模式匹配常见视频格式: ```python video_pattern = re.compile( r'\.(mp4|webm|ogg|mov|avi|wmv|flv|mkv|m4v|3gp|mpg|mpeg)$', re.IGNORECASE ) ``` ### 3. 视频平台检测 函数会检查 iframe 的 src 属性是否包含常见视频平台的关键词: ```python if iframe.get('src') and any(p in iframe['src'] for p in ['youtube', 'vimeo', 'dailymotion', 'video']): ``` ### 4. 输出结果 对于每个找到的包含视频链接的 div 元素,函数会返回完整的 HTML 元素,以便进一步处理。 ## 使用场景 此方法适用于: - 从网页中提取视频内容 - 分析网页中的媒体资源 - 构建视频内容检测系统 - 网页内容过滤和分类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值