P1151 子数整数

题目描述

对于一个五位数a1​a2​a3​a4​a5​,可将其拆分为三个子数:

sub1​=a1​a2​a3​

sub2​=a2​a3​a4​

sub3​=a3​a4​a5​

例如,五位数20207可以拆分成

sub1​=202

sub2​=020(=20)

sub3​=207

现在给定一个正整数KK,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1​,sub2​,sub3​都可被K整除。

输入格式

一个正整数K

输出格式

每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“No”。

输入输出样例

输入 #1复制

15

输出 #1复制

22555
25555
28555
30000

说明/提示

0

思路:这道题数据较小正常模拟就好,普遍做法是提取出三个子数再判断,缺点就是繁琐易错

所以直接把每一位拆开再组合一下再判断就不容易错了,最后注意没有K可除尽的数时记得输出No

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int n,ans=0;
int main() {
    cin>>n;
    for(int i=1;i<3;i++)
    {
        for(int j=0;j<10;j++)
        {
            for(int k=0;k<10;k++)
            {
                for(int q=0;q<10;q++)
                {
                    for(int w=0;w<10;w++)
                    {
                        int tmp1=i*100+j*10+k,tmp2=j*100+k*10+q,tmp3=k*100+q*10+w;
                        if(tmp1%n==0&&tmp2%n==0&&tmp3%n==0)
                        {
                            ans=1;
                            cout<

你可能感兴趣的:(dfs,bfs,职场和发展,c++)