ABC012 C - 九九足し算

備忘録

問題

atcoder.jp

回答

import sys
import os
import math
import bisect
import itertools
import collections
import heapq
import queue
import array
import time
import numpy as np
from decimal import Decimal, ROUND_HALF_UP

# 時々使う
# from scipy.sparse.csgraph import csgraph_from_dense, floyd_warshall
# from collections import defaultdict, deque

# 再帰の制限設定
sys.setrecursionlimit(10000000)


def ii(): return int(sys.stdin.buffer.readline().rstrip())
def il(): return list(map(int, sys.stdin.buffer.readline().split()))
def fl(): return list(map(float, sys.stdin.buffer.readline().split()))
def iln(n): return [int(sys.stdin.buffer.readline().rstrip())
                    for _ in range(n)]


def iss(): return sys.stdin.buffer.readline().decode().rstrip()
def sl(): return list(map(str, sys.stdin.buffer.readline().decode().split()))
def isn(n): return [sys.stdin.buffer.readline().decode().rstrip()
                    for _ in range(n)]


def lcm(x, y): return (x * y) // math.gcd(x, y)


# MOD = 10 ** 9 + 7
MOD = 998244353
INF = float('inf')


def main():
    if os.getenv("LOCAL"):
        sys.stdin = open("input.txt", "r")

    MAX = 2025
    N = ii()
    q = MAX - N

    ret = []
    for i in range(1, 10):
        if q % i == 0 and q // i < 10:
            ret.append([i, q//i])

    for a, b in ret:
        print("%s x %s" % (a, b))


if __name__ == '__main__':
    main()

考え方

基本的には与えられたNと九九の和2025の差分を、
余りなく割ることが出来る数字を求めるだけです。
ただし、注意点として回答は全て九九で答える必要があります。
そのため、二桁の数字は省く必要があります。