六六大顺
难度:白银
0时间限制:1秒
巴占用内存:64M
输入正整数N,输出N以内(含N),6的倍数,并且包含6的数字,比如36等。
格式
输入格式:输入整型
输出格式:输出整型,空格分隔
//
// Created by abner on 2022/11/11.
//
#include <bits/stdc++.h>
using namespace std;
bool check(int n)
{
while(n){
if(n%10==6)
return true;
n=n/10;
}
return false;
}
int main(){
int n;
cin>>n;
for (int i=1;i<=n;i++){
if(i%6==0&&check(i)){
cout <<i<<" ";
}
}
return 0;
}
22. Strategy(策略)
意图:
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
适用性:
许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时[H087] ,可以使用策略模式。
算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
一个类定义了多种行为, 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
详解:设计模式是什么鬼(策略)
23. Visitor(访问者)
意图:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
适用性:
一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是Opdyke和Johnson所描述过的“重分解以一般化”的一个很好的例子[OJ93]。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
控制子类扩展。模板方法只在特定点调用“hook ”操作(参见效果一节),这样就只允许在这些点进行扩展。
详解:设计模式是什么鬼(访问者)