#includestdiohint main int mijl=1len=0k=0; int ans1000=1num10000=0; scanfd&m; ifm==3 m==4 printfd dnd1m-1m-1; else fori=2;;i++ ifm=i numlen++=i; m-=i; else break; fori=len-1;i=0;i--对于剩余的数从后往
package main
import "fmt"
func main() { var m, i, j, l, len, k int ans := make([]int, 1000) num := make([]int, 10000) fmt.Scan(&m) if m == 3 || m == 4 { fmt.Printf("%d %d\n%d", 1, m-1, m-1) } else { l = 1 len = 0 k = 0 for i = 2; ; i++ { if m >= i { num[len] = i len++ m -= i } else { break } } for i = len - 1; i >= 0; i-- { if m > 0 { num[i]++ m-- } else { break } } for i = 0; i < len; i++ { for j = 0; j < l; j++ { ans[j] = ans[j]*num[i] + k k = ans[j] / 10000 ans[j] %= 10000 } if k != 0 { ans[j] = k k = 0 l++ } } fmt.Printf("%d", num[0]) for i = 1; i < len; i++ { fmt.Printf(" %d", num[i]) } fmt.Printf("\n%d", ans[l-1]) for i = l - 2; i >= 0; i-- { fmt.Printf("%d", ans[i]) } }
原文地址: https://www.cveoy.top/t/topic/hPHI 著作权归作者所有。请勿转载和采集!