import 'package:flutter/material.dart'; import 'tool_kit.dart'; /// n 边形染色:用 k 种颜色给 n 边形的 n 个顶点染色,相邻顶点不同色。 /// /// 圈图 Cₙ 的色多项式是 (k−1)ⁿ + (−1)ⁿ(k−1)。 class CycleColoringPage extends StatefulWidget { const CycleColoringPage({super.key}); @override State createState() => _CycleColoringPageState(); } class _CycleColoringPageState extends State { final _n = ToolField( 'n (边数)', hint: '不小于 3 的整数', keyboard: TextInputType.number, ); final _k = ToolField('k (颜色数)', hint: '正整数', keyboard: TextInputType.number); @override Widget build(BuildContext context) => ToolScaffold( title: 'n 边形染色', fields: [_n, _k], compute: (session) async { final n = int.tryParse(_n.text); final k = int.tryParse(_k.text); if (n == null || n < 3) throw Exception('n 要填一个不小于 3 的整数'); if (k == null || k < 1) throw Exception('k 要填一个正整数'); return exactAndApprox(session, '染色方案数', '($k-1)^$n + ($k-1)*(-1)^$n'); }, ); }